Sobes.tech
Назад к вопросам
Intern
10

Зачем нужны оконные функции в SQL и чем они отличаются от GROUP BY?

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

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

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 и вернёт по одной строке на отдел с агрегированным значением.