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

quantilesExactInclusive

quantilesExactInclusive

Введена в версии: v20.1

Точно вычисляет несколько квантилей числовой последовательности на разных уровнях одновременно с использованием инклюзивного метода.

Эта функция эквивалентна quantileExactInclusive, но позволяет вычислять несколько уровней квантилей за один проход, что эффективнее, чем вызывать отдельные функции квантилей.

Эта функция использует инклюзивный метод вычисления квантилей, как описано в методе R-7. Она эквивалентна функции Excel PERCENTILE.INC.

Для получения точных значений все переданные значения объединяются в массив, который затем частично сортируется. Сложность алгоритма сортировки — O(N·log(N)), где N = std::distance(first, last) сравнений.

Синтаксис

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

Параметры

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

Аргументы

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

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

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

Примеры

Вычисление нескольких точных квантилей с включающими границами

CREATE TABLE num AS numbers(1000);
SELECT quantilesExactInclusive(0.25, 0.5, 0.75, 0.9, 0.95, 0.99, 0.999)(number) FROM num;
┌─quantilesExactInclusive(0.25, 0.5, 0.75, 0.9, 0.95, 0.99, 0.999)(number)─┐
│ [249.75,499.5,749.25,899.1,949.05,989.01,998.001]                        │
└──────────────────────────────────────────────────────────────────────────┘