Sobes.tech
Middle
27

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

Компании, где спрашивали
ДомкликДомклик

Ответ от нейросети

sobes.tech AI

Оконные функции и группировка (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, оконные функции позволяют анализировать данные в контексте группы, не теряя детализации по отдельным строкам.