quantileDeterministic
Приблизительно вычисляет квантиль числовой последовательности.
Функция использует алгоритм reservoir sampling с размером резервуара до 8192 и детерминированным алгоритмом сэмплирования. Результат детерминирован. Чтобы получить точную квантиль используйте функцию quantileExact.
Внутренние состояния функций quantile*
не объединяются, если они используются в одном запросе. Если вам необходимо вычислить квантили нескольких уровней, используйте функцию quantiles, это повысит эффективность запроса.
Синтаксис
quantileDeterministic(level)(expr, determinator)
Алиас: medianDeterministic
.
Аргументы
level
— уровень квантили. Опционально. Константное значение с плавающей запятой от 0 до 1. Мы рекомендуем использовать значениеlevel
из диапазона[0.01, 0.99]
. Значение по умолчанию: 0.5. Приlevel=0.5
функция вычисляет медиану.expr
— выражение, зависящее от значений столбцов, возвращающее данные числовых типов или типов Date, DateTime.determinator
— число, хэш которого используется при сэмплировании в алгоритме «Reservoir sampling», чтобы сделать результат детерминированным. В качестве значения можно использовать любое определённое положительное число, например, идентификатор пользователя или события. Если одно и то же значение попадается в выборке слишком часто, то функция выдаёт некорректный результат.
Возвращаемое значение
- Приблизительный квантиль заданного уровня.
Тип:
- Float64 для входных данных числового типа.
- Date, если входные значения имеют тип
Date
. - DateTime, если входные значения имеют тип
DateTime
. Пример
Входная таблица:
┌─val─┐
│ 1 │
│ 1 │
│ 2 │
│ 3 │
└─────┘
Запрос:
SELECT quantileDeterministic(val, 1) FROM t
Результат:
┌─quantileDeterministic(val, 1)─┐
│ 1.5 │
└───────────────────────────────┘
Смотрите также