* Edit and translate to Russian. * v2 27.10 * other-functions * Update docs/ru/sql-reference/functions/other-functions.md Co-authored-by: BayoNet <da-daos@yandex.ru> * Update docs/ru/sql-reference/functions/other-functions.md Co-authored-by: BayoNet <da-daos@yandex.ru> Co-authored-by: Daria Mozhaeva <dmozhaeva@yandex-team.ru> Co-authored-by: BayoNet <da-daos@yandex.ru>
11 KiB
toc_priority |
---|
202 |
quantileExact
Точно вычисляет квантиль числовой последовательности.
Чтобы получить точный результат, все переданные значения собираются в массив, который затем частично сортируется. Таким образом, функция потребляет объем памяти O(n)
, где n
— количество переданных значений. Для небольшого числа значений эта функция эффективна.
Внутренние состояния функций quantile*
не объединяются, если они используются в одном запросе. Если вам необходимо вычислить квантили нескольких уровней, используйте функцию quantiles, это повысит эффективность запроса.
Синтаксис
quantileExact(level)(expr)
Алиас: medianExact
.
Параметры
level
— Уровень квантили. Опционально. Константное значение с плавающей запятой от 0 до 1. Мы рекомендуем использовать значениеlevel
из диапазона[0.01, 0.99]
. Значение по умолчанию: 0.5. Приlevel=0.5
функция вычисляет медиану.expr
— Выражение над значениями столбца, которое возвращает данные числовых типов или типов Date, DateTime.
Возвращаемое значение
- Квантиль заданного уровня.
Тип:
- Float64 для входных данных числового типа.
- Date, если входные значения имеют тип
Date
. - DateTime, если входные значения имеют тип
DateTime
.
Пример
Запрос:
SELECT quantileExact(number) FROM numbers(10)
Результат:
┌─quantileExact(number)─┐
│ 5 │
└───────────────────────┘
quantileExactLow
Как и quantileExact
, эта функция вычисляет точный квантиль числовой последовательности данных.
Чтобы получить точное значение, все переданные значения объединяются в массив, который затем полностью сортируется. Сложность алгоритма сортировки равна O(N·log(N))
, где N = std::distance(first, last)
.
Возвращаемое значение зависит от уровня квантили и количества элементов в выборке, то есть если уровень 0,5, то функция возвращает нижнюю медиану при чётном количестве элементов и медиану при нечётном. Медиана вычисляется аналогично реализации median_low, которая используется в python.
Для всех остальных уровней возвращается элемент с индексом, соответствующим значению level * size_of_array
. Например:
SELECT quantileExactLow(0.1)(number) FROM numbers(10)
┌─quantileExactLow(0.1)(number)─┐
│ 1 │
└───────────────────────────────┘
При использовании в запросе нескольких функций quantile*
с разными уровнями, внутренние состояния не объединяются (то есть запрос работает менее эффективно). В этом случае используйте функцию quantiles.
Синтаксис
quantileExact(level)(expr)
Алиас: medianExactLow
.
Параметры
level
— Уровень квантили. Опциональный параметр. Константное занчение с плавающей запятой от 0 до 1. Мы рекомендуем использовать значениеlevel
из диапазона[0.01, 0.99]
. Значение по умолчанию: 0.5. Приlevel=0.5
функция вычисляет медиану.expr
— Выражение над значениями столбца, которое возвращает данные числовых типов, Date или DateTime.
Возвращаемое значение
- Квантиль заданного уровня.
Тип:
- Float64 для входных данных числового типа.
- Date если входные значения имеют тип
Date
. - DateTime если входные значения имеют тип
DateTime
.
Пример
Запрос:
SELECT quantileExactLow(number) FROM numbers(10)
Результат:
┌─quantileExactLow(number)─┐
│ 4 │
└──────────────────────────┘
quantileExactHigh
Как и quantileExact
, эта функция вычисляет точный квантиль числовой последовательности данных.
Все переданные значения объединяются в массив, который затем сортируется, чтобы получить точное значение. Сложность алгоритма сортировки равна O(N·log(N))
, где N = std::distance(first, last)
.
Возвращаемое значение зависит от уровня квантили и количества элементов в выборке, то есть если уровень 0,5, то функция возвращает верхнюю медиану при чётном количестве элементов и медиану при нечётном. Медиана вычисляется аналогично реализации median_high, которая используется в python. Для всех остальных уровней возвращается элемент с индексом, соответствующим значению level * size_of_array
.
Эта реализация ведет себя точно так же, как quantileExact
.
При использовании в запросе нескольких функций quantile*
с разными уровнями, внутренние состояния не объединяются (то есть запрос работает менее эффективно). В этом случае используйте функцию quantiles.
Синтаксис
quantileExactHigh(level)(expr)
Алиас: medianExactHigh
.
Параметры
level
— Уровень квантили. Опциональный параметр. Константное занчение с плавающей запятой от 0 до 1. Мы рекомендуем использовать значениеlevel
из диапазона[0.01, 0.99]
. Значение по умолчанию: 0.5. Приlevel=0.5
функция вычисляет медиану.expr
— Выражение над значениями столбца, которое возвращает данные числовых типов, Date или DateTime.
Возвращаемое значение
- Квантиль заданного уровня.
Тип:
- Float64 для входных данных числового типа.
- Date если входные значения имеют тип
Date
. - DateTime если входные значения имеют тип
DateTime
.
Пример
Запрос:
SELECT quantileExactHigh(number) FROM numbers(10)
Результат:
┌─quantileExactHigh(number)─┐
│ 5 │
└───────────────────────────┘
Смотрите также