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

Função de janela

APPROX_PERCENTILE( <expr> , <percentile> ) OVER ( [ PARTITION BY <expr3> ] )
Copy

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 que 1.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);
Copy

Executar consultas e mostrar a saída:

SELECT APPROX_PERCENTILE(c1, 0.1) FROM testtable;
+----------------------------+
| APPROX_PERCENTILE(C1, 0.1) |
|----------------------------|
|                        1.5 |
+----------------------------+
Copy
SELECT APPROX_PERCENTILE(c1, 0.5) FROM testtable;
+----------------------------+
| APPROX_PERCENTILE(C1, 0.5) |
|----------------------------|
|                        5.5 |
+----------------------------+
Copy

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 |
+------------------------------+
Copy