- Categorias:
Funções de agregação (Geral) , Funções de janela
PERCENTILE_CONT¶
Retorna um valor percentual baseado em uma distribuição contínua da coluna de entrada (especificada em order_by_expr
). Se nenhuma linha de entrada estiver exatamente no percentual desejado, o resultado será calculado usando a interpolação linear dos dois valores de entrada mais próximos. Os valores NULL são ignorados no cálculo.
- Consulte também:
Sintaxe¶
Função de agregação
PERCENTILE_CONT( <percentile> ) WITHIN GROUP (ORDER BY <order_by_expr>)
Função de janela
PERCENTILE_CONT( <percentile> ) WITHIN GROUP (ORDER BY <order_by_expr>) OVER ( [ PARTITION BY <expr3> ] )
Argumentos¶
percentile
O percentual do valor que você quer encontrar. O percentual deve ser uma constante entre 0,0 e 1,0. Por exemplo, se você quiser encontrar o valor no percentual 90, deverá especificar 0,9.
order_by_expr
A expressão (tipicamente um nome de coluna) pela qual se ordenam os valores. Por exemplo, se você quiser encontrar o aluno cuja pontuação SAT em matemática está no percentual 90, então especifique a coluna que contém a pontuação SAT em matemática.
Note que esta também é implicitamente a coluna a partir da qual o valor retornado é escolhido. Por exemplo, se você classificar por pontuação SAT em matemática, então o resultado será uma das pontuações SAT em matemática. Não é possível ordenar por uma coluna e obter um valor percentual para uma coluna diferente.
expr3
Esta é a expressão opcional usada para agrupar linhas em partições.
Retornos¶
Retorna o valor que está no percentual especificado. Se nenhuma linha de entrada estiver exatamente no percentual desejado, o resultado será calculado usando a interpolação linear dos dois valores de entrada mais próximos.
Nota
Se um grupo tiver apenas um valor, então esse valor será retornado para qualquer percentual especificado (por exemplo, ambos percentual 0,0 e percentual 1,0 retornarão essa única linha).
Notas de uso¶
O argumento
percentile
para a função deve ser uma constante.DISTINCT não é suportado para esta função.
A função
PERCENTILE_CONT
interpola entre os dois valores mais próximos, enquanto a funçãoPERCENTILE_DISC
escolhe o valor mais próximo em vez de interpolar.Quando usado como uma função de janela:
Esta função não oferece suporte para:
Subcláusula ORDER BY na cláusula OVER().
Quadros de janela.
Exemplos¶
O exemplo a seguir mostra os valores no 25º percentual (0,25) dentro de vários grupos:
Criar e preencher uma tabela com valores:
create or replace table aggr(k int, v decimal(10,2)); insert into aggr (k, v) values (0, 0), (0, 10), (0, 20), (0, 30), (0, 40), (1, 10), (1, 20), (2, 10), (2, 20), (2, 25), (2, 30), (3, 60), (4, NULL);Executar uma consulta e mostrar a saída (note que alguns valores são exatos e alguns são interpolados):
select k, percentile_cont(0.25) within group (order by v) from aggr group by k order by k; +---+-------------------------------------------------+ | K | PERCENTILE_CONT(0.25) WITHIN GROUP (ORDER BY V) | |---+-------------------------------------------------| | 0 | 10.00000 | | 1 | 12.50000 | | 2 | 17.50000 | | 3 | 60.00000 | | 4 | NULL | +---+-------------------------------------------------+