Занятие 18. Фильтрация агрегированных данных. HAVING

📁 Блок: SQL / MySQL / Агрегация ⏱️ Время изучения: ~75 мин 🎯 Сложность: Средняя
#where #having #and #or #count #sum #avg #min #max

⚡ Кратко: суть темы

Занятие учит фильтровать сгруппированные данные оператором HAVING. Разбираем разницу между WHERE и HAVING, правила совместного использования и фактический порядок выполнения SQL-запроса.

  • WHERE фильтрует строки до группировки, не умеет работать с агрегатами.
  • HAVING фильтрует группы после GROUP BY, может использовать COUNT, SUM, AVG и др.
  • Порядок выполнения: FROMWHEREGROUP BYHAVINGSELECTORDER BYLIMIT.

Что запомнить: фильтрация групп — через HAVING, фильтрация строк — через WHERE.

Частая ошибка: пытаться написать WHERE COUNT(*) > 1 вместо HAVING COUNT(*) > 1.

📖 О чём это занятие

Группировка даёт сводные цифры, но часто нужны не все группы, а только те, что удовлетворяют условию. На этом занятии изучаем оператор HAVING, который фильтрует результат агрегации, и разбираем, почему для этого не подходит WHERE.

Что изучим

📚 Что повторить перед изучением

🎯 Что изучать дальше