- Catégories :
- Fonctions d’agrégation (Percentile Estimation) , Fonctions de fenêtre 
APPROX_PERCENTILE¶
Renvoie une valeur approximative du centile désiré (c’est-à-dire si la colonne c a n nombres, alors APPROX_PERCENTILE(c, p) renvoie un nombre tel qu’environ n * p des nombres dans c sont plus petits que le nombre renvoyé).
Cette fonction utilise une version améliorée de l’algorithme t-Digest. Pour plus d’informations, voir Estimation des valeurs centiles.
Syntaxe¶
Fonction d’agrégation
APPROX_PERCENTILE( <expr> , <percentile> )
Fonction de fenêtre
APPROX_PERCENTILE( <expr> , <percentile> ) OVER ( [ PARTITION BY <expr3> ] )
Arguments¶
- expr
- Une expression valide, telle qu’un nom de colonne, qui donne une valeur numérique. 
- percentile
- Une valeur réelle constante supérieure ou égale à - 0.0et inférieure à- 1.0. Cela indique le centile (de 0 à 99,999 …). Par exemple La valeur 0,65 indique le 65e centile.
- expr3
- Il s’agit de l’expression facultative utilisée pour grouper des lignes dans des partitions. 
Renvoie¶
La sortie est renvoyée sous forme de valeur DOUBLE.
Notes sur l’utilisation¶
- Le centile ne fonctionne que sur les valeurs numériques. Par conséquent, - exprdoit générer des valeurs numériques ou être convertie en nombres.
- Les valeurs renvoyées ne figurent pas nécessairement dans l’ensemble de données. 
- La valeur renvoyée est une approximation. La taille de l’ensemble de données et l’asymétrie de celui-ci ont une incidence sur la précision de l’approximation. 
- Lorsque cette fonction est appelée en tant que fonction de fenêtre, elle ne prend pas en charge : - Une clause ORDER BY dans la clause OVER. 
- Cadres de fenêtre explicites. 
 
Exemples¶
Démontrer la fonction APPROX_PERCENTILE :
Créer et remplir une table avec des valeurs :
CREATE TABLE testtable (c1 INTEGER); INSERT INTO testtable (c1) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
Exécuter des requêtes et afficher le résultat :
SELECT APPROX_PERCENTILE(c1, 0.1) FROM testtable; +----------------------------+ | APPROX_PERCENTILE(C1, 0.1) | |----------------------------| | 1.5 | +----------------------------+SELECT APPROX_PERCENTILE(c1, 0.5) FROM testtable; +----------------------------+ | APPROX_PERCENTILE(C1, 0.5) | |----------------------------| | 5.5 | +----------------------------+
Noter que la valeur renvoyée dans ce cas est supérieure à toute valeur figurant réellement dans l’ensemble de données :
SELECT APPROX_PERCENTILE(c1, 0.999) FROM testtable; +------------------------------+ | APPROX_PERCENTILE(C1, 0.999) | |------------------------------| | 10.5 | +------------------------------+