quantilesExact
Добавленный в: v1.1.0
Точно вычисляет несколько квантилей числовой последовательности данных для разных уровней одновременно.
Эта функция эквивалентна quantileExact, но позволяет вычислять несколько уровней квантилей за один проход, что эффективнее, чем вызывать отдельные функции квантилей.
Чтобы получить точные значения, все переданные значения объединяются в массив, который затем частично сортируется. Поэтому функция использует O(n) памяти, где n — количество переданных значений.
Синтаксис
quantilesExact(level1, level2, ...)(expr)Параметры
level— Уровни квантилей. Одно или несколько константных чисел с плавающей запятой от 0 до 1. Рекомендуется использовать значенияlevelв диапазоне[0.01, 0.99].Float*
Аргументы
expr— Выражение над значениями столбца, результат которого имеет числовой тип данных,Date,DateTimeилиDateTime64.(U)Int*илиInt128илиUInt128илиInt256илиUInt256илиFloat*илиDecimal*илиDateилиDateTimeилиDateTime64
Возвращаемое значение
Массив квантилей для указанных уровней в том же порядке, в котором эти уровни были заданы. Для числовых типов данных формат вывода соответствует входному формату. Array((U)Int*) или Array(Int128) или Array(UInt128) или Array(Int256) или Array(UInt256) или Array(Float*) или Array(Decimal*) или Array(Date) или Array(DateTime) или Array(DateTime64)
Примеры
Вычисление нескольких точных квантилей
SELECT quantilesExact(0.25, 0.5, 0.75)(number) FROM numbers(10)┌─quantilesExact(0.25, 0.5, 0.75)(number)─┐
│ [2,5,7] │
└─────────────────────────────────────────┘