A função PERCENTILE_CONT calcula um percentil preciso usando interpolação linear. Ela ordena os valores de uma coluna em ordem crescente e retorna um valor interpolado para o percentile especificado.
Sintaxe
-- 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])
Parâmetros
col_name: Obrigatório. Coluna do tipo DOUBLE ou DECIMAL.
percentile: Obrigatório. Constante DOUBLE no intervalo [0, 1].
isIgnoreNull: Opcional. Constante BOOLEAN que define se valores NULL devem ser ignorados. O padrão é TRUE. Se definido como FALSE, os valores NULL são tratados como o valor mínimo.
partition_clause e orderby_clause: Consulte Funções de janela para obter detalhes.
Valor de retorno
Retorna o percentil calculado como um valor DOUBLE.
Exemplos
-
Exemplo 1: Calcule percentis precisos dentro de uma janela, ignorando valores 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 | +------------+-------------+------------+--------------+------------+ -
Exemplo 2: Calcule percentis precisos dentro de uma janela, tratando valores NULL como o valor mínimo.
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 | +------------+-------------+------------+--------------+------------+
Funções relacionadas
PERCENTILE_CONT pode atuar como função de agregação ou de janela.
Para outras funções que agregam dados em vários registros, consulte Funções de agregação.
Para funções que executam cálculos sobre uma janela de linhas, como somatórios e classificações, consulte Funções de janela.