Перейти к основному содержанию

quantileTiming

Добавленный в: v1.1.0 Вычисляет квантиль числовой последовательности данных с заданной точностью. Результат детерминирован (то есть не зависит от порядка обработки запроса). Функция оптимизирована для работы с последовательностями, описывающими такие распределения, как время загрузки веб-страниц или время ответа серверной части. При использовании в запросе нескольких функций quantile* с разными уровнями внутренние состояния не объединяются (то есть запрос работает менее эффективно, чем мог бы). В этом случае используйте функцию quantiles. Точность Вычисление является точным, если:
  • Общее количество значений не превышает 5670.
  • Общее количество значений превышает 5670, но время загрузки страницы меньше 1024 мс.
В противном случае результат вычисления округляется до ближайшего значения, кратного 16 мс.
Для вычисления квантилей времени загрузки страницы эта функция эффективнее и точнее, чем quantile.
Если в функцию не передаются значения (при использовании quantileTimingIf), возвращается NaN. Это позволяет отличать такие случаи от случаев, в которых результат равен нулю. Примечания о сортировке значений NaN см. в предложении ORDER BY.
Синтаксис
quantileTiming(level)(expr)
Псевдонимы: medianTiming Параметры
  • level — Необязательный параметр. Уровень квантиля. Константное число с плавающей запятой в диапазоне от 0 до 1. Рекомендуем использовать значение level из диапазона [0.01, 0.99]. Значение по умолчанию: 0.5. При level=0.5 функция вычисляет медиану. Float*
Аргументы
  • expr — Выражение над значениями столбца, возвращающее число типа Float*. Если в функцию передаются отрицательные значения, поведение не определено. Если значение превышает 30 000 (то есть время загрузки страницы больше 30 секунд), считается, что оно равно 30 000. Float*
Возвращаемое значение Квантиль указанного уровня. Если в функцию не переданы значения (при использовании quantileTimingIf), возвращается NaN. Это позволяет отличать такие случаи от случаев, в которых результатом является ноль. Float32 Примеры Вычисление квантиля времени
Query
CREATE TABLE t (response_time UInt32) ENGINE = Memory;
INSERT INTO t VALUES (72), (112), (126), (145), (104), (242), (313), (168), (108);

SELECT quantileTiming(response_time) FROM t;
Response
┌─quantileTiming(response_time)─┐
│                           126 │
└───────────────────────────────┘
См. также
Последнее изменение 10 июня 2026 г.