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