Перейти к основному содержимому
Перейти к основному содержимому

Функции quantiles

quantiles

Введено в: v1.1

Вычисляет несколько приближённых квантилей числовой последовательности данных на разных уровнях одновременно.

Эта функция применяет reservoir sampling с размером резервуара до 8192 и генератором случайных чисел для выборки. Результат недетерминирован.

Использование quantiles более эффективно, чем вызов нескольких отдельных функций quantile, когда вам нужно несколько значений квантилей, так как все квантили вычисляются за один проход по данным.

Синтаксис

quantiles(level1, level2, ...)(expr)

Параметры

  • level — уровни квантилей. Одно или несколько константных чисел с плавающей запятой от 0 до 1. Рекомендуется использовать значения level в диапазоне [0.01, 0.99]. Float*

Аргументы

  • expr — выражение над значениями столбца, результатом которого являются числовые типы данных, Date или DateTime. (U)Int* или Float* или Decimal* или Date или DateTime

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

Массив приблизительных квантилей заданных уровней в том же порядке, в котором уровни были указаны. Array(Float64) или Array(Date) или Array(DateTime)

Примеры

Эффективное вычисление нескольких квантилей

CREATE TABLE t (val UInt32) ENGINE = Memory;
INSERT INTO t VALUES (1), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);

SELECT quantiles(0.25, 0.5, 0.75, 0.9)(val) FROM t;
┌─quantiles(0.25, 0.5, 0.75, 0.9)(val)─┐
│ [3, 5.5, 8, 9.5]                     │
└──────────────────────────────────────┘