> ## 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.

> quantilesGK fonctionne de manière similaire à quantileGK, mais permet de calculer simultanément des quantiles à différents niveaux et renvoie un Array.

# quantilesGK

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

Introduit dans : v23.4.0

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

Cette fonction est similaire à [`quantileGK`](/fr/reference/functions/aggregate-functions/quantileGK), mais elle permet de calculer plusieurs niveaux de quantile en un seul passage, ce qui est plus efficace que d’appeler des fonctions de quantile séparées.

L’algorithme de Greenwald-Khanna sert à calculer des quantiles sur un flux de données de manière très efficace.
Il a été présenté par Michael Greenwald et Sanjeev Khanna en 2001.
L’algorithme est très efficace, n’utilisant que O(log n) en espace et O(log log n) en temps par élément (où n correspond à la taille de l’entrée).
Il est également très précis et fournit des valeurs de quantile approximatives avec une précision contrôlable.

**Syntaxe**

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

**Paramètres**

* `accuracy` — Précision des quantiles. Entier positif constant. Une valeur de précision plus élevée signifie une erreur plus faible. Par exemple, si l'argument `accuracy` est défini sur 100, les quantiles calculés auront une erreur ne dépassant pas 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. [`UInt*`](/fr/reference/data-types/int-uint)
* `level` — Niveaux de quantiles. Un ou plusieurs nombres constants à virgule flottante compris entre 0 et 1. [`Float*`](/fr/reference/data-types/float)

**Arguments**

* `expr` — Expression appliquée aux valeurs de la colonne, dont le résultat est de type numérique, `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**

Array de quantiles correspondant aux niveaux spécifiés, dans le même ordre que celui dans lequel ils ont été spécifiés. [`Array(Float64)`](/fr/reference/data-types/array) ou [`Array(Date)`](/fr/reference/data-types/array) ou [`Array(DateTime)`](/fr/reference/data-types/array)

**Exemples**

**Calcul de plusieurs quantiles avec l'algorithme 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]                                        │
└──────────────────────────────────────────────────┘
```

**Quantiles plus précis**

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