ClickHouse/docs/ru/sql-reference/aggregate-functions/reference/quantiles.md
2022-04-09 07:29:05 -06:00

6.7 KiB
Raw Blame History

sidebar_position
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)

Аргументы

Параметры

  • 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)

Аргументы

Параметры

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