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

> Вычисляет квантиль числовой последовательности с использованием алгоритма Greenwald-Khanna.

# quantileGK

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

Добавленный в: v23.4.0

Вычисляет [`quantile`](https://en.wikipedia.org/wiki/Quantile) числовой последовательности с использованием алгоритма [Greenwald-Khanna](http://infolab.stanford.edu/~datar/courses/cs361a/papers/quantiles.pdf).

Алгоритм Greenwald-Khanna используется для очень эффективного вычисления квантилей в потоке данных.
Он был представлен Майклом Гринвальдом и Сандживом Ханной в 2001 году.
Он широко используется в базах данных и системах обработки больших данных, где требуется вычислять точные квантили на больших потоках данных в реальном времени.
Алгоритм очень эффективен: для каждого элемента ему требуется всего O(log n) памяти и O(log log n) времени (где n — размер входных данных).
При этом он обеспечивает высокую точность, выдавая приближённое значение квантиля с высокой вероятностью.

`quantileGK` отличается от других функций вычисления квантилей в ClickHouse тем, что позволяет пользователю управлять точностью приближённого результата.

**Синтаксис**

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

**Псевдонимы**: `medianGK`

**Параметры**

* `accuracy` — Точность квантиля. Константное положительное целое число. Чем больше значение точности, тем меньше ошибка. Например, если аргумент `accuracy` задан как 100, вычисленный квантиль с высокой вероятностью будет иметь ошибку не более 1%. Между точностью вычисляемых квантилей и вычислительной сложностью алгоритма существует компромисс. Более высокое значение точности требует больше памяти и вычислительных ресурсов для точного вычисления квантиля, тогда как меньшее значение `accuracy` позволяет выполнять вычисления быстрее и с меньшими затратами памяти, но с несколько меньшей точностью. [`UInt*`](/ru/reference/data-types/int-uint)
* `level` — Необязательный. Уровень квантиля. Константное число с плавающей точкой от 0 до 1. Значение по умолчанию: 0.5. При `level=0.5` функция вычисляет медиану. [`Float*`](/ru/reference/data-types/float)

**Аргументы**

* `expr` — Выражение над значениями столбца, дающее значения числовых типов данных, Date или DateTime. [`(U)Int*`](/ru/reference/data-types/int-uint) или [`Float*`](/ru/reference/data-types/float) или [`Decimal*`](/ru/reference/data-types/decimal) или [`Date`](/ru/reference/data-types/date) или [`DateTime`](/ru/reference/data-types/datetime)

**Возвращаемое значение**

Возвращает квантиль с указанными уровнем и точностью. [`Float64`](/ru/reference/data-types/float) или [`Date`](/ru/reference/data-types/date) или [`DateTime`](/ru/reference/data-types/datetime)

**Примеры**

**Вычисление квантиля с разными значениями точности**

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

**Квантиль с более высокой точностью**

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

**См. также**

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