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

quantileTiming

С заданной точностью вычисляет квантиль числовой последовательности данных.

Результат детерминирован: не зависит от порядка обработки запроса. Функция оптимизирована для работы с последовательностями, которые описывают распределения, например временем загрузки веб-страниц или временем ответа бэкенда.

При использовании в одном запросе нескольких функций quantile* с разными уровнями квантилей их внутренние состояния не объединяются (то есть запрос работает менее эффективно, чем мог бы). В этом случае используйте функцию quantiles.

Синтаксис

quantileTiming(level)(expr)

Псевдоним: 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 мс.

Примечание

Для вычисления квантилей времени загрузки страницы эта функция более эффективна и точна, чем quantile.

Возвращаемое значение

  • Квантиль указанного уровня.

Тип: Float32.

Примечание

Если функции не переданы значения (при использовании quantileTimingIf), возвращается NaN. Это сделано для того, чтобы отличать такие случаи от случаев, когда результатом является ноль. См. раздел ORDER BY clause для примечаний по сортировке значений NaN.

Пример

Входная таблица:

┌─response_time─┐
│            72 │
│           112 │
│           126 │
│           145 │
│           104 │
│           242 │
│           313 │
│           168 │
│           108 │
└───────────────┘

Запрос:

SELECT quantileTiming(response_time) FROM t

Результат:

┌─quantileTiming(response_time)─┐
│                           126 │
└───────────────────────────────┘

См. также