[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();
Эти функции возвращают значение из другой строки в рамках окна;