quantileTiming
С заданной точностью вычисляет квантиль числовой последовательности данных.
Результат детерминирован (не зависит от порядка выполнения запроса). Функция оптимизирована для работы с последовательностями, описывающими распределения, например временем загрузки веб‑страниц или временем ответа бэкенда.
При использовании в одном запросе нескольких функций quantile* с разными уровнями квантилей их внутренние состояния не комбинируются (то есть запрос выполняется менее эффективно, чем мог бы). В этом случае используйте функцию quantiles.
Синтаксис
Псевдоним: medianTiming.
Аргументы
-
level— уровень квантиля. Необязательный параметр. Постоянное число с плавающей точкой от 0 до 1. Рекомендуется использовать значениеlevelв диапазоне[0.01, 0.99]. Значение по умолчанию: 0.5. Приlevel=0.5функция вычисляет медиану. -
expr— выражение над значениями столбца, возвращающее число типа Float*.- Если в функцию передаются отрицательные значения, поведение не определено.
- Если значение больше 30 000 (время загрузки страницы более 30 секунд), предполагается, что оно равно 30 000.
Точность
Вычисление является точным, если:
- Общее количество значений не превышает 5670.
- Общее количество значений превышает 5670, но время загрузки страницы меньше 1024 мс.
В противном случае результат вычисления округляется до ближайшего числа, кратного 16 мс.
:::note
Для вычисления квантилей времени загрузки страниц эта функция более эффективна и точна, чем quantile.
:::
Возвращаемое значение
- Квантиль указанного уровня.
Тип: Float32.
:::note
Если в функцию не переданы значения (при использовании quantileTimingIf), возвращается NaN. Это сделано для того, чтобы отличать такие случаи от случаев, которые дают нулевой результат. См. раздел ORDER BY clause для примечаний по сортировке значений NaN.
:::
Пример
Исходная таблица:
Запрос:
Результат:
См. также