Todos os produtos
Search
Central de documentação

MaxCompute:PERCENTILE_DISC

Última atualização: Jun 27, 2026

A função PERCENTILE_DISC calcula um valor de percentil específico. Ela ordena os valores de uma coluna em ordem crescente e retorna o primeiro valor cuja distribuição cumulativa seja maior ou igual ao percentil especificado.

PERCENTILE_DISC atua como função de agregação e de janela.

Sintaxe

-- 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])

Parâmetros

Parâmetro

Obrigatório

Tipo

Descrição

col_name

Sim

Coluna com valores ordenáveis.

percentile

Sim

Constante DOUBLE

Percentil desejado, no intervalo [0, 1].

isIgnoreNull

Não

Constante Boolean

Indica se valores NULL devem ser ignorados. Padrão: TRUE. Defina como FALSE para tratar NULL como o valor mínimo durante a ordenação.

partition_clause, orderby_clause

Consulte Funções de janela.

Valor de retorno

Retorna o valor do percentil. O tipo de dados corresponde ao de col_name.

Exemplos

Exemplo 1: Calcular valores de percentil ignorando NULL (comportamento padrão)

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);

Resultado:

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

O valor NULL é excluído da ordenação. Os três valores não NULL a, b e c são classificados em ordem crescente. Assim, o percentil 0 é a, o percentil 50 é b e o percentil 100 é c.

Exemplo 2: Calcular valores de percentil tratando NULL como valor mínimo

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);

Resultado:

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

Ao definir isIgnoreNull como false, NULL passa a ter classificação inferior a a, b e c. Consequentemente, o percentil 0 torna-se NULL e o percentil 50 muda de b para a.

Funções relacionadas