Tous les produits
Search
Centre de documentation

MaxCompute:PERCENTILE_DISC

Dernière mise à jour :Sep 22, 2026

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

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

Parameter

Required

Type

Description

col_name

Yes

Colonne contenant des valeurs triables.

percentile

Yes

DOUBLE constant

Centile cible, compris dans l'intervalle [0, 1].

isIgnoreNull

No

Boolean constant

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 centile. Le type de données correspond à celui de la colonne col_name.

Exemples

Exemple 1 : Calculer les valeurs de centile 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 NULL a, b et c sont triées par ordre croissant. Le 0e centile correspond donc à a, le 50e centile à b et le 100e centile à c.

Exemple 2 : Calculer les valeurs de centile 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 centile devient alors NULL et le 50e centile passe de b à a.

Fonctions associées