Оконные функции предоставляют мощные возможности для выполнения различных расчётных операций с использованием данных, охватывающих определённый диапазон строк, которые связаны с текущей строкой. Эти функции называются "оконными", потому что оперируют "окном" строк, ограниченным в соответствии с определёнными условиями. Оконные функции особенно полезны при выполнении агрегаций, при которых нужно сохранить детализацию данных, что обычно недостижимо с помощью обычных агрегатных функций (
SUM, COUNT, AVG и т.д.), применяемых в группировках.🚩Ключевые аспекты
🟠Определение окна
Окно определяется с помощью конструкции
OVER, которая может включать в себя:Порядок следования строк (
ORDER BY).Разбиение на группы или партиции (
PARTITION BY).Ограничения окна (
ROWS или RANGE), определяющие начальную и конечную точки окна относительно текущей строки.🟠Типы оконных функций
Агрегатные функции: SUM, AVG, MIN, MAX, COUNT и т.д., которые обычно используются для агрегации данных в рамках окна.
Функции ранжирования: ROW_NUMBER, RANK, DENSE_RANK, эти функции присваивают уникальные или повторяющиеся номера строкам в зависимости от их значений по определённым полям.
Функции смещения: LEAD, LAG, позволяют получить значение из строки, расположенной на определённое количество позиций до или после текущей строки в рамках окна.
Статистические и аналитические функции: например, PERCENT_RANK, CUME_DIST.
SELECT
date,
sales,
AVG(sales) OVER (ORDER BY date ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS moving_average
FROM
sales_data;
Ставь 👍 и забирай 📚 Базу знаний