- Catégories :
Fonctions d’agrégation (estimation du centile), Fonctions de la 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.0
et 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,
expr
doit 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.
Lorsqu’il est utilisé comme une fonction de fenêtre :
Cette fonction ne prend pas en charge :
Sous-clause ORDER BY dans la clause OVER().
Cadres de fenêtre.
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 | +------------------------------+