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

> Calcula el cuantil de una secuencia de datos numéricos utilizando el algoritmo Greenwald-Khanna.

# quantileGK

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

Introducido en: v23.4.0

Calcula el [`quantile`](https://en.wikipedia.org/wiki/Quantile) de una secuencia de datos numéricos mediante el algoritmo [Greenwald-Khanna](http://infolab.stanford.edu/~datar/courses/cs361a/papers/quantiles.pdf).

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.
Se usa ampliamente en bases de datos y sistemas de big data donde es necesario calcular cuantiles precisos sobre grandes flujos de datos en tiempo real.
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 un valor de cuantil aproximado con alta probabilidad.

`quantileGK` se diferencia de otras funciones de cuantiles de ClickHouse porque permite al usuario controlar la precisión del resultado aproximado del cuantil.

**Sintaxis**

```sql theme={null}
quantileGK(accuracy, level)(expr)
```

**Alias**: `medianGK`

**Parámetros**

* `accuracy` — Precisión del cuantil. Entero positivo constante. Un valor de precisión más alto implica un menor error. Por ejemplo, si el argumento `accuracy` se establece en 100, el cuantil calculado tendrá 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. Una precisión mayor requiere más memoria y recursos computacionales para calcular el cuantil con exactitud, mientras que un valor menor de `accuracy` permite un cálculo más rápido y con un uso de memoria más eficiente, aunque con una precisión ligeramente inferior. [`UInt*`](/es/reference/data-types/int-uint)
* `level` — Opcional. Nivel del cuantil. Número constante de punto flotante entre 0 y 1. Valor predeterminado: 0.5. Con `level=0.5`, la función calcula la mediana. [`Float*`](/es/reference/data-types/float)

**Argumentos**

* `expr` — Expresión sobre los valores de la columna que da como resultado 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**

Devuelve el cuantil con el nivel y la precisión especificados. [`Float64`](/es/reference/data-types/float) o [`Date`](/es/reference/data-types/date) o [`DateTime`](/es/reference/data-types/datetime)

**Ejemplos**

**Cálculo del cuantil con distintos niveles de precisión**

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

**Cuantil con mayor precisión**

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

**Ver también**

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