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

функции квантилей

quantiles

Синтаксис: quantiles(level1, level2, ...)(x)

Все функции квантилей также имеют соответствующие функции квантилей: quantiles, quantilesDeterministic, quantilesTiming, quantilesTimingWeighted, quantilesExact, quantilesExactWeighted, quantileExactWeightedInterpolated, quantileInterpolatedWeighted, quantilesTDigest, quantilesBFloat16, quantilesDD. Эти функции рассчитывают все квантили перечисленных уровней за один проход и возвращают массив полученных значений.

quantilesExactExclusive

Точно вычисляет квантиль числовой последовательности данных.

Чтобы получить точное значение, все переданные значения объединяются в массив, который затем частично сортируется. Поэтому функция использует O(n) памяти, где n — количество переданных значений. Однако для малого количества значений функция очень эффективна.

Эта функция эквивалентна функции PERCENTILE.EXC Excel, (тип R6).

Работает более эффективно с наборами уровней, чем quantileExactExclusive.

Синтаксис

quantilesExactExclusive(level1, level2, ...)(expr)

Аргументы

Параметры

  • level — Уровни квантилей. Возможные значения: (0, 1) — границы не включены. Float.

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

  • Array квантилей указанных уровней.

Тип значений массива:

  • 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 — количество переданных значений. Однако для малого количества значений функция очень эффективна.

Эта функция эквивалентна функции PERCENTILE.INC Excel, (тип R7).

Работает более эффективно с наборами уровней, чем quantileExactInclusive.

Синтаксис

quantilesExactInclusive(level1, level2, ...)(expr)

Аргументы

Параметры

  • level — Уровни квантилей. Возможные значения: [0, 1] — границы включены. Float.

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

  • Array квантилей указанных уровней.

Тип значений массива:

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

quantilesGK

quantilesGK работает аналогично quantileGK, но позволяет рассчитывать количества на различных уровнях одновременно и возвращает массив.

Синтаксис

quantilesGK(accuracy, level1, level2, ...)(expr)

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

  • Array квантилей указанных уровней.

Тип значений массива:

  • Float64 для входных значений числового типа данных.
  • Date если входные значения имеют тип Date.
  • DateTime если входные значения имеют тип DateTime.

Пример

Запрос:

SELECT quantilesGK(1, 0.25, 0.5, 0.75)(number + 1)
FROM numbers(1000)

┌─quantilesGK(1, 0.25, 0.5, 0.75)(plus(number, 1))─┐
│ [1,1,1]                                          │
└──────────────────────────────────────────────────┘

SELECT quantilesGK(10, 0.25, 0.5, 0.75)(number + 1)
FROM numbers(1000)

┌─quantilesGK(10, 0.25, 0.5, 0.75)(plus(number, 1))─┐
│ [156,413,659]                                     │
└───────────────────────────────────────────────────┘
SELECT quantilesGK(100, 0.25, 0.5, 0.75)(number + 1)
FROM numbers(1000)

┌─quantilesGK(100, 0.25, 0.5, 0.75)(plus(number, 1))─┐
│ [251,498,741]                                      │
└────────────────────────────────────────────────────┘

SELECT quantilesGK(1000, 0.25, 0.5, 0.75)(number + 1)
FROM numbers(1000)

┌─quantilesGK(1000, 0.25, 0.5, 0.75)(plus(number, 1))─┐
│ [249,499,749]                                       │
└─────────────────────────────────────────────────────┘