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