WHERE фильтрует строки перед группировкой (GROUP BY), а HAVING фильтрует группы после группировки. WHERE может использовать столбцы, отсутствующие в SELECT, HAVING обычно использует агрегатные функции или столбцы, присутствующие в GROUP BY.
Пример:
sql
Сравнение:
| Оператор | Назначение | Применяется к | Может использовать агрегатные функции | Порядок выполнения относительно GROUP BY |
|---|---|---|---|---|
WHERE | Фильтрация строк | Отдельные строки | Нет | До |
HAVING | Фильтрация групп | Группы строк | Да | После |