Чем оконные функции отличаются от группировки (GROUP BY)?

Оконные функции и группировка (GROUP BY) в SQL служат для разных целей, хотя обе работают с агрегированными данными.

Короткий ответ

Что ответить на собеседовании

Оконные функции и группировка (GROUP BY) в SQL служат для разных целей, хотя обе работают с агрегированными данными.

Подробный разбор

Ответ с пояснениями

Оконные функции и группировка (GROUP BY) в SQL служат для разных целей, хотя обе работают с агрегированными данными.

GROUP BY объединяет строки по указанным столбцам и возвращает по одной строке на каждую группу. При этом можно применять агрегатные функции (SUM, COUNT и т.д.), но результат сводится к одной строке на группу.

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

Пример:

SELECT
  employee_id,
  department_id,
  salary,
  AVG(salary) OVER (PARTITION BY department_id) AS avg_dept_salary
FROM employees;

Здесь для каждой строки вычисляется средняя зарплата по отделу, но строки не группируются — мы видим все сотрудники с дополнительным столбцом.

В отличие от GROUP BY, оконные функции позволяют анализировать данные в контексте группы, не теряя детализации по отдельным строкам.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее