Аналитические функции Назад В начало Вперед

Аналитические функции (в т.ч. конструкция PARTITION BY) поддерживаются на всех поддерживаемых Галактикой версиях Oracle и на MS SQL начиная с версии 2005. Конструкция ORDER BY поддерживается только на Oracle.

<аналитическая-функция> = <имя-функции> (<список-параметров>)
  OVER ( [<секционирование> [<сортировка>]] )

<имя-функции> - те же агрегатные функции, см. "Функции агрегации. ".

<имя-функции> = SUM | COUNT | AVG | MIN | MAX

<список-параметров> - параметры вызова функции.

OVER - ключевое слово, идентифицирующее эту функцию как аналитическую (в отличие от одноименной функции агрегирования). Конструкция после ключевого слова OVER описывает срез данных, по которому будет вычисляться аналитическая функция.

<секционирование> - необязательная конструкция секционирования. Если конструкция секционирования не задана, все результирующее множество считается одной большой секцией. Эта конструкция используется для разбиения результирующего множества на группы, так что аналитическая функция применяется к группам, а не ко всему результирующему множеству.

<секционирование> = PARTITION BY <выражение> {, <выражение> }

<сортировка> - необязательная конструкция. Определяет, как упорядочиваются данные в группах при вычислении аналитической функции.

<сортировка> = ORDER BY <выражение> {, <выражение> }

При выполнении запроса прямого SQL, содержащего аналитические функции, не поддерживаемые текущей СУБД, возвращается синтаксическая ошибка разбора запроса (как если бы транслятор прямого SQL ничего не знал о такой конструкции).

При компиляции запроса встроенного прямого SQL ограничений нет, т.е. компилировать запросы, содержащие аналитические функции можно на любой платформе СУБД.

Для разработки прикладного кода, независимого от текущей на момент исполнения платформы СУБД, можно использовать функцию sqlDBMSBoolInfo с параметрами DSQL_Analytics и DSQL_Analytic_OrderBy.

Таким образом запросы прямого SQL, содержащие аналитические функции, можно использовать при разработке алгоритмов, реализовывая разные ветки для СУБД с разными возможностями. Так же возможно разрабатывать хранимые процедуры, опционально использующие аналитические функции, если использовать условную компиляцию с макрофункцией #__EVALUATE__.

Версия

Начиная с Атлантис 5.4.22.