> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> Вычисляет несколько приблизительных квантилей на разных уровнях одновременно с помощью алгоритма t-digest с учетом веса каждого элемента.

# quantilesTDigestWeighted

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

Добавленный в: v20.1.0

Вычисляет сразу несколько приближённых [квантилей](https://en.wikipedia.org/wiki/Quantile) числовой последовательности данных на разных уровнях с использованием алгоритма [t-digest](https://github.com/tdunning/t-digest/blob/master/docs/t-digest-paper/histo.pdf).
Функция учитывает вес каждого элемента последовательности.

Эта функция эквивалентна [`quantileTDigestWeighted`](/docs/ru/reference/functions/aggregate-functions/quantileTDigestWeighted), но позволяет вычислять несколько уровней квантилей за один проход, что эффективнее, чем вызывать отдельные функции для каждого квантиля.

Максимальная ошибка составляет 1%. Потребление памяти — `log(n)`, где `n` — количество значений.

Производительность этой функции ниже, чем у [`quantiles`](/docs/ru/reference/functions/aggregate-functions/quantiles) или [`quantilesTiming`](/docs/ru/reference/functions/aggregate-functions/quantilesTiming).
По соотношению размера State и точности эта функция значительно превосходит `quantiles`.

Результат зависит от порядка выполнения запроса и является недетерминированным.

<Note>
  Использовать `quantilesTDigestWeighted` [не рекомендуется для очень маленьких наборов данных](https://github.com/tdunning/t-digest/issues/167#issuecomment-828650275), так как это может привести к значительной погрешности.
  В этом случае рассмотрите возможность использования [`quantilesTDigest`](/docs/ru/reference/functions/aggregate-functions/quantilesTDigest) вместо неё.
</Note>

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

```sql theme={null}
quantilesTDigestWeighted(level1, level2, ...)(expr, weight)
```

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

* `level` — Уровни квантилей. Одно или несколько константных чисел с плавающей запятой от 0 до 1. Рекомендуется использовать значения `level` в диапазоне `[0.01, 0.99]`. [`Float*`](/docs/ru/reference/data-types/float)

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

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

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

Массив приближённых квантилей указанных уровней в том же порядке, в котором они были заданы. Для входных данных `Date` и `DateTime` выходной формат соответствует входному формату. [`Array(Float32)`](/docs/ru/reference/data-types/array) или [`Array(Date)`](/docs/ru/reference/data-types/array) или [`Array(DateTime)`](/docs/ru/reference/data-types/array)

**Примеры**

**Вычисление нескольких взвешенных квантилей с использованием t-digest**

```sql title=Query theme={null}
SELECT quantilesTDigestWeighted(0.25, 0.5, 0.75)(number, 1) FROM numbers(100);
```

```response title=Response theme={null}
┌─quantilesTDigestWeighted(0.25, 0.5, 0.75)(number, 1)──┐
│ [24.75,49.5,74.25]                                    │
└───────────────────────────────────────────────────────┘
```
