Добавленный в: v1.1.0
Вычисляет несколько приближённых квантилей числовой последовательности одновременно на разных уровнях.
Эта функция использует резервуарное сэмплирование с размером резервуара до 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] │
└──────────────────────────────────────┘
Последнее изменение 10 июня 2026 г.