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

> quantilesGK funciona de forma similar a quantileGK, pero permite calcular cuantiles de distintos niveles simultáneamente y devuelve un Array.

# quantilesGK

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

Introducido en: v23.4.0

Calcula múltiples [cuantiles](https://en.wikipedia.org/wiki/Quantile) de una secuencia de datos numéricos en distintos niveles simultáneamente mediante el algoritmo [Greenwald-Khanna](http://infolab.stanford.edu/~datar/courses/cs361a/papers/quantiles.pdf).

Esta función funciona de forma similar a [`quantileGK`](/es/reference/functions/aggregate-functions/quantileGK), pero permite calcular varios niveles de cuantiles en una sola pasada, lo que resulta más eficiente que llamar a funciones de cuantiles individuales.

El algoritmo Greenwald-Khanna se utiliza para calcular cuantiles en un flujo de datos de forma muy eficiente.
Fue introducido por Michael Greenwald y Sanjeev Khanna en 2001.
El algoritmo es muy eficiente, ya que solo requiere O(log n) de espacio y O(log log n) de tiempo por elemento (donde n es el tamaño de la entrada).
También es muy preciso, ya que proporciona valores aproximados de cuantiles con una precisión ajustable.

**Sintaxis**

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

**Parámetros**

* `accuracy` — Precisión de los cuantiles. Entero positivo constante. Cuanto mayor sea el valor de precisión, menor será el error. Por ejemplo, si el argumento de precisión se establece en 100, los cuantiles calculados tendrán un error no superior al 1 % con alta probabilidad. Existe un equilibrio entre la precisión de los cuantiles calculados y la complejidad computacional del algoritmo. [`UInt*`](/es/reference/data-types/int-uint)
* `level` — Niveles de los cuantiles. Uno o varios números de coma flotante constantes entre 0 y 1. [`Float*`](/es/reference/data-types/float)

**Argumentos**

* `expr` — Expresión sobre los valores de la columna cuyo resultado son tipos de datos numéricos, Date o DateTime. [`(U)Int*`](/es/reference/data-types/int-uint) o [`Float*`](/es/reference/data-types/float) o [`Decimal*`](/es/reference/data-types/decimal) o [`Date`](/es/reference/data-types/date) o [`DateTime`](/es/reference/data-types/datetime)

**Valor devuelto**

Array de cuantiles de los niveles especificados, en el mismo orden en que se indicaron dichos niveles. [`Array(Float64)`](/es/reference/data-types/array) o [`Array(Date)`](/es/reference/data-types/array) o [`Array(DateTime)`](/es/reference/data-types/array)

**Ejemplos**

**Cálculo de varios cuantiles con el 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]                                        │
└──────────────────────────────────────────────────┘
```

**Cuantiles con mayor precisión**

```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]                                    │
└────────────────────────────────────────────────────┘
```
