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

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 с примечаниями о сортировке значений NaN.

Пример

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

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

Запрос:

SELECT quantileTiming(response_time) FROM t

Результат:

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

Смотрите также