Оконные функции
Предпосылки
Оконная функция — это специальный класс встроенных функций. Подобно агрегатной функции, она также выполняет вычисления на нескольких входных строках для получения одного значения данных. Разница в том, что оконная функция обрабатывает входные данные в пределах определенного окна, а не использует метод "group by". Данные в каждом окне могут быть отсортированы и сгруппированы с помощью предложения over(). Оконная функция вычисляет отдельное значение для каждой строки, а не вычисляет одно значение для каждой группы. Эта гибкость позволяет пользователям добавлять дополнительные столбцы в предложение select и дополнительно фильтровать набор результатов. Оконная функция может появляться только в списке select и в самой внешней позиции предложения. Она вступает в силу в конце запроса, то есть после выполнения операций join, where и group by. Оконная функция часто используется для анализа трендов, вычисления выбросов и выполнения анализа группировки на крупномасштабных данных.
Использование
Синтаксис
function(args) OVER([partition_by_clause] [order_by_clause] [order_by_clause window_clause])
partition_by_clause ::= PARTITION BY expr [, expr ...]
order_by_clause ::= ORDER BY expr [ASC | DESC] [, expr [ASC | DESC] ...]
Предложение PARTITION BY
Предложение Partition By аналогично Group By. Оно группирует входные строки по одному или нескольким указанным столбцам. Строки с одинаковым значением группируются вместе.