Todos os produtos
Search
Central de documentação

MaxCompute:PERCENTILE_DISC

Última atualização: Sep 22, 2026

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

PERCENTILE_DISC é uma 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 que contém valores ordenáveis.

percentile

Sim

Constante DOUBLE

O percentil desejado, no intervalo [0, 1].

isIgnoreNull

Não

Constante BOOLEAN

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

partition_clause, orderby_clause

—

—

Consulte Window Functions Overview.

Valor de retorno

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

Exemplos

Exemplo 1: Cálculo de 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          |
+------------+------------+------------+------------+

A ordenação exclui o valor NULL. A função ordena os três valores não NULL a, b e c em ordem crescente. Assim, o percentil 0 é a, o percentil 50 é b e o percentil 100 é c.

Exemplo 2: Cálculo de valores de percentil tratando NULL como o 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, a função classifica NULL abaixo de a, b e c. O percentil 0 passa a ser NULL e o percentil 50 muda de b para a.

Funções relacionadas