La fonction PERCENTILE_CONT calcule un percentile précis par interpolation linéaire. Elle trie les valeurs d'une colonne par ordre croissant et renvoie une valeur interpolée pour le percentile spécifié.
Syntaxe
-- As an aggregate function
PERCENTILE_CONT(<col_name>, DOUBLE <percentile>[, BOOLEAN <isIgnoreNull>])
-- As a window function
PERCENTILE_CONT(<col_name>, DOUBLE <percentile>[, BOOLEAN <isIgnoreNull>]) OVER ([partition_clause] [orderby_clause])
Paramètres
col_name : Obligatoire. Colonne de type DOUBLE ou DECIMAL.
percentile : Obligatoire. Constante DOUBLE comprise dans l'intervalle [0, 1].
isIgnoreNull : Facultatif. Constante BOOLEAN indiquant s'il faut ignorer les valeurs NULL. La valeur par défaut est TRUE. Si vous la définissez sur FALSE, les valeurs NULL sont traitées comme la valeur minimale.
partition_clause et orderby_clause : Consultez la rubrique Window Functions pour plus de détails.
Valeur de retour
Renvoie le percentile calculé sous forme de valeur DOUBLE.
Exemples
-
Exemple 1 : Calculer des percentiles précis au sein d'une fenêtre, en ignorant les valeurs NULL.
SELECT PERCENTILE_CONT(x, 0) OVER() AS min, PERCENTILE_CONT(x, 0.01) OVER() AS percentile1, PERCENTILE_CONT(x, 0.5) OVER() AS median, PERCENTILE_CONT(x, 0.9) OVER() AS percentile90, PERCENTILE_CONT(x, 1) OVER() AS max FROM VALUES(0D),(3D),(NULL),(1D),(2D) AS tbl(x) LIMIT 1; -- The following result is returned: +------------+-------------+------------+--------------+------------+ | min | percentile1 | median | percentile90 | max | +------------+-------------+------------+--------------+------------+ | 0.0 | 0.03 | 1.5 | 2.7 | 3.0 | +------------+-------------+------------+--------------+------------+ -
Exemple 2 : Calculer des percentiles précis au sein d'une fenêtre, en traitant les valeurs NULL comme la valeur minimale.
SELECT PERCENTILE_CONT(x, 0, false) OVER() AS min, PERCENTILE_CONT(x, 0.01, false) OVER() AS percentile1, PERCENTILE_CONT(x, 0.5, false) OVER() AS median, PERCENTILE_CONT(x, 0.9, false) OVER() AS percentile90, PERCENTILE_CONT(x, 1, false) OVER() AS max FROM VALUES(0D),(3D),(NULL),(1D),(2D) AS tbl(x) LIMIT 1; -- The following result is returned: +------------+-------------+------------+--------------+------------+ | min | percentile1 | median | percentile90 | max | +------------+-------------+------------+--------------+------------+ | NULL | 0.0 | 1.0 | 2.6 | 3.0 | +------------+-------------+------------+--------------+------------+
Fonctions connexes
Vous pouvez utiliser la fonction PERCENTILE_CONT comme fonction d'agrégation ou comme fonction de fenêtrage.
Pour découvrir d'autres fonctions qui agrègent des données sur plusieurs enregistrements, consultez la rubrique Aggregate Functions.
Pour en savoir plus sur les fonctions qui effectuent des calculs sur une fenêtre de lignes, telles que la sommation et le classement, reportez-vous à la section Window Functions.