> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Calcula o quantil de uma sequência de dados numéricos usando o algoritmo de Greenwald-Khanna.

# quantileGK

<div id="quantileGK">
  ## quantileGK
</div>

Introduzido em: v23.4.0

Calcula o [`quantile`](https://en.wikipedia.org/wiki/Quantile) de uma sequência de dados numéricos usando o algoritmo [Greenwald-Khanna](http://infolab.stanford.edu/~datar/courses/cs361a/papers/quantiles.pdf).

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**

```sql theme={null}
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*`](/pt-BR/reference/data-types/int-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*`](/pt-BR/reference/data-types/float)

**Argumentos**

* `expr` — Expressão sobre os valores da coluna que resulta em tipos de dados numéricos, Date ou DateTime. [`(U)Int*`](/pt-BR/reference/data-types/int-uint) ou [`Float*`](/pt-BR/reference/data-types/float) ou [`Decimal*`](/pt-BR/reference/data-types/decimal) ou [`Date`](/pt-BR/reference/data-types/date) ou [`DateTime`](/pt-BR/reference/data-types/datetime)

**Valor retornado**

Retorna o quantil com o nível e a precisão especificados. [`Float64`](/pt-BR/reference/data-types/float) ou [`Date`](/pt-BR/reference/data-types/date) ou [`DateTime`](/pt-BR/reference/data-types/datetime)

**Exemplos**

**Calculando o quantil com diferentes níveis de precisão**

```sql title=Query theme={null}
SELECT quantileGK(1, 0.25)(number + 1) FROM numbers(1000);
```

```response title=Response theme={null}
┌─quantileGK(1, 0.25)(plus(number, 1))─┐
│                                    1 │
└──────────────────────────────────────┘
```

**Quantil com maior precisão**

```sql title=Query theme={null}
SELECT quantileGK(100, 0.25)(number + 1) FROM numbers(1000);
```

```response title=Response theme={null}
┌─quantileGK(100, 0.25)(plus(number, 1))─┐
│                                    251 │
└────────────────────────────────────────┘
```

**Veja também**

* [median](/pt-BR/reference/functions/aggregate-functions/median)
* [quantiles](/pt-BR/reference/functions/aggregate-functions/quantiles)
