Назад к вопросам
СБЕР
Middle
4
Какая разница между оконной функцией и агрегирующей функцией в SQL?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Агрегирующая функция в SQL (например, SUM, AVG, COUNT) вычисляет одно итоговое значение по группе строк и возвращает одну строку на группу. Например, SUM(salary) посчитает сумму зарплат по всей группе.
Оконная функция (window function) тоже работает с группами строк, но возвращает результат для каждой строки, учитывая контекст окна (набор строк вокруг текущей). Например, SUM(salary) OVER (PARTITION BY department) вернёт сумму зарплат по отделу для каждой строки, не сводя результат к одной строке.
Пример:
SELECT employee_id, department, salary,
SUM(salary) OVER (PARTITION BY department) AS dept_salary_sum
FROM employees;
Здесь для каждой строки будет сумма зарплат в отделе, а не одна строка на отдел, как при использовании агрегирующей функции с GROUP BY.