Чем оконные функции отличаются от группировки (GROUP BY)?
Answer from AI
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, оконные функции позволяют анализировать данные в контексте группы, не теряя детализации по отдельным строкам.