Фильтрация SUM(salary): HAVING вместо WHERE

SUM(salary) нельзя использовать в WHERE этого запроса: фильтрация агрегированных групп выполняется через HAVING после GROUP BY.

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

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

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 проверяет уже рассчитанную сумму по отделу. Это разные этапы обработки запроса.

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

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

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

Подробнее