Занятие 18. Фильтрация агрегированных данных. HAVING
⚡ Кратко: суть темы
Занятие учит фильтровать сгруппированные данные оператором HAVING. Разбираем разницу между WHERE и HAVING, правила совместного использования и фактический порядок выполнения SQL-запроса.
WHEREфильтрует строки до группировки, не умеет работать с агрегатами.HAVINGфильтрует группы послеGROUP BY, может использоватьCOUNT,SUM,AVGи др.- Порядок выполнения:
FROM→WHERE→GROUP BY→HAVING→SELECT→ORDER BY→LIMIT.
Что запомнить: фильтрация групп — через HAVING, фильтрация строк — через WHERE.
Частая ошибка: пытаться написать WHERE COUNT(*) > 1 вместо HAVING COUNT(*) > 1.
📖 О чём это занятие
Группировка даёт сводные цифры, но часто нужны не все группы, а только те, что удовлетворяют условию. На этом занятии изучаем оператор HAVING, который фильтрует результат агрегации, и разбираем, почему для этого не подходит WHERE.
Что изучим
- WHERE vs HAVING — различия и области применения.
- Синтаксис HAVING — где ставить и какие условия задавать.
- Совместное использование —
WHERE+GROUP BY+HAVING. - Порядок выполнения запроса — что на самом деле происходит в СУБД.