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

> quantilesGK funciona de maneira semelhante a quantileGK, mas permite calcular quantis em diferentes níveis simultaneamente e retorna um Array.

# quantilesGK

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

Introduzido em: v23.4.0

Calcula múltiplos [quantis](https://en.wikipedia.org/wiki/Quantile) de uma sequência de dados numéricos em diferentes níveis simultaneamente usando o algoritmo [Greenwald-Khanna](http://infolab.stanford.edu/~datar/courses/cs361a/papers/quantiles.pdf).

Esta função funciona de forma semelhante a [`quantileGK`](/pt-BR/reference/functions/aggregate-functions/quantileGK), mas permite calcular vários níveis de quantil em uma única passagem, o que é mais eficiente do que chamar funções de quantil individualmente.

O algoritmo Greenwald-Khanna é usado para calcular quantis em um fluxo de dados de forma altamente eficiente.
Ele foi introduzido por Michael Greenwald e Sanjeev Khanna em 2001.
O algoritmo é altamente eficiente, usando apenas espaço O(log n) e tempo O(log log n) por item (em que n é o tamanho da entrada).
Ele também é altamente preciso, fornecendo valores de quantil aproximados com precisão ajustável.

**Sintaxe**

```sql theme={null}
quantilesGK(accuracy, level1, level2, ...)(expr)
```

**Parâmetros**

* `accuracy` — Precisão dos quantis. Inteiro positivo constante. Quanto maior o valor de precisão, menor o erro. Por exemplo, se o argumento `accuracy` for definido como 100, os quantis calculados terão erro não superior a 1% com alta probabilidade. Há um equilíbrio entre a precisão dos quantis calculados e a complexidade computacional do algoritmo. [`UInt*`](/pt-BR/reference/data-types/int-uint)
* `level` — Níveis dos quantis. Um ou mais números de ponto flutuante constantes entre 0 e 1. [`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**

Array de quantis dos níveis especificados, na mesma ordem em que os níveis foram especificados. [`Array(Float64)`](/pt-BR/reference/data-types/array) ou [`Array(Date)`](/pt-BR/reference/data-types/array) ou [`Array(DateTime)`](/pt-BR/reference/data-types/array)

**Exemplos**

**Cálculo de múltiplos quantis com o algoritmo GK**

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

```response title=Response theme={null}
┌─quantilesGK(1, 0.25, 0.5, 0.75)(plus(number, 1))─┐
│ [1, 1, 1]                                        │
└──────────────────────────────────────────────────┘
```

**Quantis mais precisos**

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

```response title=Response theme={null}
┌─quantilesGK(100, 0.25, 0.5, 0.75)(plus(number, 1))─┐
│ [251, 498, 741]                                    │
└────────────────────────────────────────────────────┘
```
