Какая разница между оконной функцией и агрегирующей функцией в SQL?

Агрегирующая функция в SQL (например, SUM, AVG, COUNT) вычисляет одно итоговое значение по группе строк и возвращает одну строку на группу. Например, SUM(salary) посчитает сумму зарплат по всей группе.

Короткий ответ

Что ответить на собеседовании

Агрегирующая функция в SQL (например, SUM, AVG, COUNT) вычисляет одно итоговое значение по группе строк и возвращает одну строку на группу. Например, SUM(salary) посчитает сумму зарплат по всей группе.

Подробный разбор

Ответ с пояснениями

Агрегирующая функция в 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.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее