Поделиться через


Агрегатная функция 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