Чем отличаются WHERE и HAVING в SQL?

WHERE фильтрует отдельные строки до группировки, HAVING — группы после агрегации. Условия по COUNT или SUM обычно относятся к HAVING.

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

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

WHERE фильтрует отдельные строки до группировки, HAVING — группы после агрегации. Условия по COUNT или SUM обычно относятся к HAVING.

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

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

WHERE фильтрует отдельные строки до группировки, HAVING — группы после агрегации. Условия по COUNT или SUM обычно относятся к HAVING.

SELECT department_id, COUNT(*) AS employees
FROM staff
WHERE active = true
GROUP BY department_id
HAVING COUNT(*) > 5;

Сначала остаются активные сотрудники, затем считаются группы и отбираются отделы с числом больше пяти. Логический порядок важнее физического плана: оптимизатор может безопасно переносить часть условий. HAVING без GROUP BY также возможен для одной общей агрегатной группы.

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

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

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

Подробнее