quantilesExactExclusive
Добавленный в: v20.1.0
Точно вычисляет несколько квантилей последовательности числовых данных одновременно на нескольких уровнях с использованием исключающего метода.
Эта функция эквивалентна 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*или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.9499999999999,989.99,998.999] │
└──────────────────────────────────────────────────────────────────────────┘