Pular para o conteúdo principal

quantileGK

Introduzido em: v23.4.0 Calcula o quantile de uma sequência de dados numéricos usando o algoritmo Greenwald-Khanna. O algoritmo Greenwald-Khanna é usado para calcular quantis em um fluxo de dados de forma altamente eficiente. Ele foi apresentado por Michael Greenwald e Sanjeev Khanna em 2001. É amplamente usado em bancos de dados e sistemas de big data nos quais é necessário calcular quantis precisos em tempo real em grandes fluxos de dados. O algoritmo é muito eficiente, exigindo apenas espaço O(log n) e tempo O(log log n) por item (em que n é o tamanho da entrada). Ele também é bastante preciso, fornecendo um valor de quantil aproximado com alta probabilidade. quantileGK é diferente de outras funções de quantil no ClickHouse porque permite ao usuário controlar a precisão do resultado aproximado. Sintaxe
quantileGK(accuracy, level)(expr)
Aliases: medianGK Parâmetros
  • accuracy — Precisão do quantil. Inteiro positivo constante. Um valor maior de precisão significa menos erro. Por exemplo, se o argumento accuracy for definido como 100, o quantil calculado terá erro não superior a 1%, com alta probabilidade. Há um compromisso entre a precisão dos quantis calculados e a complexidade computacional do algoritmo. Uma precisão maior requer mais memória e recursos computacionais para calcular o quantil com exatidão, enquanto um valor menor de accuracy permite um cálculo mais rápido e mais eficiente em termos de memória, mas com precisão ligeiramente menor. UInt*
  • level — Opcional. Nível do quantil. Número de ponto flutuante constante de 0 a 1. Valor padrão: 0.5. Em level=0.5, a função calcula a mediana. Float*
Argumentos Valor retornado Retorna o quantil com o nível e a precisão especificados. Float64 ou Date ou DateTime Exemplos Calculando o quantil com diferentes níveis de precisão
Query
SELECT quantileGK(1, 0.25)(number + 1) FROM numbers(1000);
Response
┌─quantileGK(1, 0.25)(plus(number, 1))─┐
│                                    1 │
└──────────────────────────────────────┘
Quantil com maior precisão
Query
SELECT quantileGK(100, 0.25)(number + 1) FROM numbers(1000);
Response
┌─quantileGK(100, 0.25)(plus(number, 1))─┐
│                                    251 │
└────────────────────────────────────────┘
Veja também
Última modificação em 10 de junho de 2026