Tous les produits
Search
Centre de documentation

MaxCompute:PERCENTILE_DISC

Dernière mise à jour :Aug 10, 2026

La fonction PERCENTILE_DISC calcule une valeur de percentile spécifique. Elle trie les valeurs d'une colonne donnée par ordre croissant et renvoie la première valeur dont la distribution cumulative est supérieure ou égale au percentile spécifié.

PERCENTILE_DISC est à la fois une fonction d'agrégation et une fonction de fenêtrage.

Syntaxe

-- Aggregate function
PERCENTILE_DISC(<col_name>, DOUBLE <percentile>[, BOOLEAN <isIgnoreNull>])

-- Window function
PERCENTILE_DISC(<col_name>, DOUBLE <percentile>[, BOOLEAN <isIgnoreNull>]) OVER ([partition_clause] [orderby_clause])

Paramètres

Paramètre

Obligatoire

Type

Description

col_name

Oui

Nom de la colonne contenant des valeurs triables.

percentile

Oui

Constante DOUBLE

Valeur du percentile cible, comprise dans l'intervalle [0, 1].

isIgnoreNull

Non

Constante booléenne

Indique s'il faut ignorer les valeurs NULL. Valeur par défaut : TRUE. Définissez ce paramètre sur FALSE pour traiter les valeurs NULL comme la valeur minimale lors du tri.

partition_clause, orderby_clause

Consultez la section Window Functions Overview.

Valeur de retour

Renvoie la valeur du percentile. Le type de données correspond à celui de la colonne col_name.

Exemples

Exemple 1 : Calculer les percentiles en ignorant les valeurs NULL (comportement par défaut)

SELECT
  x,
  PERCENTILE_DISC(x, 0) OVER() AS min,
  PERCENTILE_DISC(x, 0.5) OVER() AS median,
  PERCENTILE_DISC(x, 1) OVER() AS max
FROM VALUES('c'),(NULL),('b'),('a') AS tbl(x);

Résultat :

+------------+------------+------------+------------+
| x          | min        | median     | max        |
+------------+------------+------------+------------+
| c          | a          | b          | c          |
| NULL       | a          | b          | c          |
| b          | a          | b          | c          |
| a          | a          | b          | c          |
+------------+------------+------------+------------+

Les valeurs NULL sont exclues du tri. Les trois valeurs non nulles a, b et c sont triées par ordre croissant. Par conséquent, le 0e percentile correspond à a, le 50e percentile à b et le 100e percentile à c.

Exemple 2 : Calculer les percentiles en traitant les valeurs NULL comme minimales

SELECT
  x,
  PERCENTILE_DISC(x, 0, false) OVER() AS min,
  PERCENTILE_DISC(x, 0.5, false) OVER() AS median,
  PERCENTILE_DISC(x, 1, false) OVER() AS max
FROM VALUES('c'),(NULL),('b'),('a') AS tbl(x);

Résultat :

+------------+------------+------------+------------+
| x          | min        | median     | max        |
+------------+------------+------------+------------+
| c          | NULL       | a          | c          |
| NULL       | NULL       | a          | c          |
| b          | NULL       | a          | c          |
| a          | NULL       | a          | c          |
+------------+------------+------------+------------+

Lorsque le paramètre isIgnoreNull est défini sur false, les valeurs NULL sont classées avant a, b et c. Le 0e percentile devient alors NULL, tandis que le 50e percentile passe de b à a.

Fonctions connexes