6.8 KiB
slug | sidebar_position |
---|---|
/ru/sql-reference/aggregate-functions/reference/quantiles | 201 |
Функции для нескольких квантилей
quantiles
Синтаксис: quantiles(level1, level2, …)(x)
Все функции для вычисления квантилей имеют соответствующие функции для вычисления нескольких квантилей: quantiles
, quantilesDeterministic
, quantilesTiming
, quantilesTimingWeighted
, quantilesExact
, quantilesExactWeighted
, quantilesTDigest
, quantilesBFloat16
. Эти функции вычисляют все квантили указанных уровней в один проход и возвращают массив с вычисленными значениями.
quantilesExactExclusive
Точно вычисляет квантили числовой последовательности.
Чтобы получить точный результат, все переданные значения собираются в массив, который затем частично сортируется. Таким образом, функция потребляет объем памяти O(n)
, где n
— количество переданных значений. Для небольшого числа значений эта функция эффективна.
Эта функция эквивалентна Excel функции PERCENTILE.EXC, тип R6.
С наборами уровней работает эффективнее, чем quantileExactExclusive.
Синтаксис
quantilesExactExclusive(level1, level2, ...)(expr)
Аргументы
expr
— выражение, зависящее от значений столбцов. Возвращает данные числовых типов, Date или DateTime.
Параметры
level
— уровень квантилей. Возможные значения: (0, 1) — граничные значения не учитываются. Float.
Возвращаемые значения
- Массив квантилей указанных уровней.
Тип значений массива:
- Float64 для входных данных числового типа.
- Date, если входные значения имеют тип
Date
. - DateTime, если входные значения имеют тип
DateTime
.
Пример
Запрос:
CREATE TABLE num AS numbers(1000);
SELECT quantilesExactExclusive(0.25, 0.5, 0.75, 0.9, 0.95, 0.99, 0.999)(x) FROM (SELECT number AS x FROM num);
Результат:
┌─quantilesExactExclusive(0.25, 0.5, 0.75, 0.9, 0.95, 0.99, 0.999)(x)─┐
│ [249.25,499.5,749.75,899.9,949.9499999999999,989.99,998.999] │
└─────────────────────────────────────────────────────────────────────┘
quantilesExactInclusive
Точно вычисляет квантили числовой последовательности.
Чтобы получить точный результат, все переданные значения собираются в массив, который затем частично сортируется. Таким образом, функция потребляет объем памяти O(n)
, где n
— количество переданных значений. Для небольшого числа значений эта функция эффективна.
Эта функция эквивалентна Excel функции PERCENTILE.INC, тип R7.
С наборами уровней работает эффективнее, чем quantileExactInclusive.
Синтаксис
quantilesExactInclusive(level1, level2, ...)(expr)
Аргументы
expr
— выражение, зависящее от значений столбцов. Возвращает данные числовых типов, Date или DateTime.
Параметры
level
— уровень квантилей. Возможные значения: [0, 1] — граничные значения учитываются. Float.
Возвращаемые значения
- Массив квантилей указанных уровней.
Тип значений массива:
- Float64 для входных данных числового типа.
- Date, если входные значения имеют тип
Date
. - DateTime, если входные значения имеют тип
DateTime
.
Пример
Запрос:
CREATE TABLE num AS numbers(1000);
SELECT quantilesExactInclusive(0.25, 0.5, 0.75, 0.9, 0.95, 0.99, 0.999)(x) FROM (SELECT number AS x FROM num);
Результат:
┌─quantilesExactInclusive(0.25, 0.5, 0.75, 0.9, 0.95, 0.99, 0.999)(x)─┐
│ [249.75,499.5,749.25,899.1,949.05,989.01,998.001] │
└─────────────────────────────────────────────────────────────────────┘