July 13, 2021

[SQL] Оконные функции

Оконные функции — это функции, которые позволяют осуществлять изолированные вычисления в заданном диапазоне строк, иначе говоря — в рамках окна. Результаты работы оконных функций просто добавляются к результирующей выборке как еще один столбец.

Окно определяется с помощью инструкции OVER(), а рамки — при помощи PARTITION BY. Давайте рассмотрим синтаксис:

Оконная функция (столбец для вычислений) OVER ([PARTITION BY столбец для группировки] [ORDER BY столбец для сортировки] [ROWS или RANGE выражение для ограничения строк в пределах группы])

По назначению выделяют 3 группы:


Агрегатные функции - SUM(), MAX(), MIN(), AVG(). COUNT(); Эти функции возвращают значение, полученное путем арифметических вычислений в рамках окна;

Функции ранжирования - RANK(), DENSE_RANK(), ROW_NUMBER(), NTILE(); Эти функции позволяют получить порядковые номера записей в рамках окна;

Функции смещения - LAG(), LEAD(), FIRST_VALUE(), LAST_VALUE(); Эти функции возвращают значение из другой строки в рамках окна;