Зачем нужны оконные функции в SQL и чем они отличаются от GROUP BY?
Answer from AI
sobes.tech AI
Оконные функции в SQL позволяют выполнять вычисления по строкам набора данных, сохраняя при этом исходное количество строк. Они работают с «окном» — набором строк, определяемым с помощью конструкции OVER(), и могут использоваться для вычисления агрегатов, ранжирования, скользящих средних и других аналитических задач без группировки данных.
В отличие от GROUP BY, который агрегирует строки и возвращает по одной строке на группу, оконные функции возвращают результат для каждой строки исходного набора, учитывая контекст окна.
Пример:
SELECT
employee_id,
department_id,
salary,
AVG(salary) OVER (PARTITION BY department_id) AS avg_department_salary
FROM employees;
Здесь для каждой строки показывается зарплата сотрудника и средняя зарплата по его отделу, при этом количество строк не меняется.
GROUP BY же сгруппирует строки по department_id и вернёт по одной строке на отдел с агрегированным значением.