SUM(salary) нельзя использовать в WHERE этого запроса: фильтрация агрегированных групп выполняется через HAVING после GROUP BY.
Фильтрация SUM(salary): HAVING вместо WHERE
SUM(salary) нельзя использовать в WHERE этого запроса: фильтрация агрегированных групп выполняется через HAVING после GROUP BY.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
SELECT department, SUM(salary) FROM employees WHERE SUM(salary) > 10000 GROUP BY department;
Ответ
SUM(salary) нельзя использовать в WHERE этого запроса: фильтрация агрегированных групп выполняется через HAVING после GROUP BY.
SELECT department, SUM(salary) AS total_salary
FROM employees
GROUP BY department
HAVING SUM(salary) > 10000;
WHERE отбирает исходные строки до группировки, например сотрудников определённого статуса. HAVING проверяет уже рассчитанную сумму по отделу. Это разные этапы обработки запроса.