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

quantilesExactExclusive

quantilesExactExclusive

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

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

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

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

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

Синтаксис

quantilesExactExclusive(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 quantilesExactExclusive(0.25, 0.5, 0.75, 0.9, 0.95, 0.99, 0.999)(number) FROM num;
┌─quantilesExactExclusive(0.25, 0.5, 0.75, 0.9, 0.95, 0.99, 0.999)(number)─┐
│ [249.25,499.5,749.75,899.9,949.95,989.99,998.999]                        │
└──────────────────────────────────────────────────────────────────────────┘