WHERE фильтрует отдельные строки до группировки, HAVING — группы после агрегации. Условия по COUNT или SUM обычно относятся к HAVING.
Чем отличаются WHERE и HAVING в SQL?
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 также возможен для одной общей агрегатной группы.