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

> Calcule le quantile d'une séquence de données numériques à l'aide de l'algorithme de Greenwald-Khanna.

# quantileGK

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

Introduit dans : v23.4.0

Calcule le [`quantile`](https://en.wikipedia.org/wiki/Quantile) d’une séquence de données numériques à l’aide de l’algorithme de [Greenwald-Khanna](http://infolab.stanford.edu/~datar/courses/cs361a/papers/quantiles.pdf).

L’algorithme de Greenwald-Khanna sert à calculer des quantiles sur un flux de données de manière très efficace.
Il a été introduit par Michael Greenwald et Sanjeev Khanna en 2001.
Il est largement utilisé dans les bases de données et les systèmes de big data lorsqu’il est nécessaire de calculer en temps réel des quantiles précis sur de grands flux de données.
Cet algorithme est très efficace : il ne nécessite que O(log n) d’espace et O(log log n) de temps par élément (où n est la taille de l’entrée).
Il est également très précis et fournit, avec une forte probabilité, une valeur de quantile approximative.

`quantileGK` se distingue des autres fonctions de quantile de ClickHouse en ce qu’il permet à l’utilisateur de contrôler la précision du résultat du quantile approximatif.

**Syntaxe**

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

**Alias** : `medianGK`

**Paramètres**

* `accuracy` — Précision du quantile. Entier positif constant. Plus la valeur de précision est élevée, plus l'erreur est faible. Par exemple, si l'argument `accuracy` est défini sur 100, le quantile calculé aura une erreur d'au plus 1 % avec une forte probabilité. Il existe un compromis entre la précision des quantiles calculés et la complexité de calcul de l'algorithme. Une précision plus élevée nécessite davantage de mémoire et de ressources de calcul pour calculer le quantile avec précision, tandis qu'une valeur de précision plus faible permet un calcul plus rapide et plus économe en mémoire, au prix d'une précision légèrement moindre. [`UInt*`](/fr/reference/data-types/int-uint)
* `level` — Facultatif. Niveau du quantile. Nombre à virgule flottante constant compris entre 0 et 1. Valeur par défaut : 0.5. À `level=0.5`, la fonction calcule la médiane. [`Float*`](/fr/reference/data-types/float)

**Arguments**

* `expr` — Expression sur les valeurs de la colonne produisant des types de données numériques, Date ou DateTime. [`(U)Int*`](/fr/reference/data-types/int-uint) ou [`Float*`](/fr/reference/data-types/float) ou [`Decimal*`](/fr/reference/data-types/decimal) ou [`Date`](/fr/reference/data-types/date) ou [`DateTime`](/fr/reference/data-types/datetime)

**Valeur renvoyée**

Renvoie le quantile du niveau et de la précision spécifiés. [`Float64`](/fr/reference/data-types/float) ou [`Date`](/fr/reference/data-types/date) ou [`DateTime`](/fr/reference/data-types/datetime)

**Exemples**

**Calcul du quantile avec différents niveaux de précision**

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

**Quantile plus précis**

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

**Voir aussi**

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