Что такое оконная функция

«Что такое оконная функция» — вопрос из категории SQL, который задают на 33% собеседований Аналитик Данных. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Основные компоненты:

  1. PARTITION BY - разделяет данные на группы (аналог GROUP BY, но без сворачивания)
  2. ORDER BY - определяет порядок строк внутри окна
  3. ROWS/RANGE - задает границы окна (предыдущие/последующие строки)

Примеры:

-- Ранжирование
SELECT 
    name, 
    salary,
    RANK() OVER(ORDER BY salary DESC) as rank
FROM employees;

-- Скользящее среднее
SELECT 
    date,
    revenue,
    AVG(revenue) OVER(ORDER BY date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) as moving_avg
FROM sales;

Популярные оконные функции: ROW_NUMBER(), RANK(), DENSE_RANK(), LEAD(), LAG(), FIRST_VALUE(), LAST_VALUE(), агрегатные функции с OVER().