Агрегатная функция percentile_approx
Область применения: Databricks SQL Databricks Runtime
Возвращает приблизительное значение процентиля expr
в группе. Эта функция является синонимом для агрегатной функции approx_percentile.
Синтаксис
percentile_approx ( [ALL | DISTINCT ] expr, percentile [, accuracy] ) [FILTER ( WHERE cond ) ]
Эту функцию также можно вызвать как функцию окна с помощью OVER
предложения.
Аргументы
expr
: числовое выражение.percentile
: числовой литерал в диапазоне от 0 до 1 или литеральный массив числовых значений, каждое из которых находится в диапазоне от 0 до 1.accuracy
: литерал INTEGER с положительным значением. Если точность опущена, используется значение10000
.cond
: необязательное логическое выражение для фильтрации строк, используемых для агрегирования.
Возвраты
Агрегатная функция возвращает выражение, которое содержит такое наименьшее значение из упорядоченной группы (с сортировкой от меньшего к большему), для которого не более percentile
из expr
имеют значения меньше или равные возвращаемому значению.
Если percentile
является массивом percentile_approx, эта функция возвращает приблизительный массив процентилей из expr
для указанного процентиля.
Параметр accuracy
позволяет повысить точность приближения в ущерб затратам памяти.
Более высокое значение точности повышает точность результата, а 1.0/accuracy
определяет относительную ошибку приближения.
Если задано значение DISTINCT
, функция работает только с уникальным набором значений expr
.
Примеры
> SELECT percentile_approx(col, array(0.5, 0.4, 0.1), 100)
FROM VALUES (0), (1), (2), (10) AS tab(col);
[1,1,0]
> SELECT percentile_approx(col, 0.5, 100)
FROM VALUES (0), (6), (7), (9), (10), (10), (10) AS tab(col);
9
> SELECT percentile_approx(DISTINCT col, 0.5, 100)
FROM VALUES (0), (6), (7), (9), (10), (10), (10) AS tab(col);
7