- Categorias:
Funções de agregação (Estimativa percentual) , Funções de janela
APPROX_PERCENTILE¶
Retorna um valor aproximado para o percentual desejado (isto é, se a coluna c
tiver n
números, então APPROX_PERCENTILE(c, p) retorna um número tal, que aproximadamente n * p
dos números em c
sejam menores que o número retornado).
Esta função usa uma versão melhorada do algoritmo t-Digest. Para obter mais informações, consulte Estimativa de valores percentuais.
- Consulte também:
APPROX_PERCENTILE_ACCUMULATE , APPROX_PERCENTILE_COMBINE , APPROX_PERCENTILE_ESTIMATE
Sintaxe¶
Função de agregação
APPROX_PERCENTILE( <expr> , <percentile> )
Função de janela
APPROX_PERCENTILE( <expr> , <percentile> ) OVER ( [ PARTITION BY <expr3> ] )
Argumentos¶
expr
Uma expressão válida, como o nome de uma coluna, que avalia como um valor numérico.
percentile
Um valor real constante maior ou igual a
0.0
e menor que1.0
. Isto indica o percentual (de 0 a 99,999….). Por exemplo O valor 0,65 indica o percentual 65.expr3
Esta é a expressão opcional usada para agrupar linhas em partições.
Retornos¶
A saída é retornada como um valor DOUBLE.
Notas de uso¶
O percentual funciona apenas em valores numéricos, portanto
expr
deve produzir valores que são números ou podem ser convertidos em números.Os valores retornados não estão necessariamente no conjunto de dados.
O valor retornado é uma aproximação. O tamanho do conjunto de dados e a assimetria no conjunto de dados afetam a precisão da aproximação.
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¶
Demonstrar a função APPROX_PERCENTILE
:
Criar e preencher uma tabela com valores:
CREATE TABLE testtable (c1 INTEGER); INSERT INTO testtable (c1) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);Executar consultas e mostrar a saída:
SELECT APPROX_PERCENTILE(c1, 0.1) FROM testtable; +----------------------------+ | APPROX_PERCENTILE(C1, 0.1) | |----------------------------| | 1.5 | +----------------------------+SELECT APPROX_PERCENTILE(c1, 0.5) FROM testtable; +----------------------------+ | APPROX_PERCENTILE(C1, 0.5) | |----------------------------| | 5.5 | +----------------------------+Observe que o valor retornado neste caso é maior do que qualquer valor atualmente no conjunto de dados:
SELECT APPROX_PERCENTILE(c1, 0.999) FROM testtable; +------------------------------+ | APPROX_PERCENTILE(C1, 0.999) | |------------------------------| | 10.5 | +------------------------------+