Что такое оконные функции в БД

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

Ответ

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

Ключевые особенности:

  • Не сворачивают строки как GROUP BY
  • Имеют доступ к данным соседних строк
  • Сохраняют исходное количество строк

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

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

Пример:

SELECT 
    name, 
    department, 
    salary,
    AVG(salary) OVER(PARTITION BY department) as avg_dept_salary,
    RANK() OVER(PARTITION BY department ORDER BY salary DESC) as rank_in_dept
FROM employees;

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