Если нужен отдельный итог на каждый филиал, используйте GROUP BY. Если нужно сохранить строки сотрудников и добавить итог филиала рядом, используйте оконную сумму без ORDER BY.
Как решить задачу с ненарастающим расчётом, например по зарплатам или филиалам, и когда использовать оконную функцию вместо группировки?
Если нужен отдельный итог на каждый филиал, используйте GROUP BY. Если нужно сохранить строки сотрудников и добавить итог филиала рядом, используйте оконную сумму без ORDER BY.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Если нужен отдельный итог на каждый филиал, используйте GROUP BY. Если нужно сохранить строки сотрудников и добавить итог филиала рядом, используйте оконную сумму без ORDER BY.
SELECT branch_id, employee_id, salary,
SUM(salary) OVER (PARTITION BY branch_id) AS branch_total
FROM employees;
Такой итог не нарастает: он одинаков для всех сотрудников одного филиала. GROUP BY branch_id вернул бы одну строку на филиал. Для накопительного итога добавляют порядок и явную рамку ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW. Термин «ненарастающий» неоднозначен, поэтому сначала уточните требуемую детализацию результата.