Оператор WHERE используется для фильтрации строк перед их группировкой. Оператор HAVING используется для фильтрации групп после того, как они были созданы оператором GROUP BY.
Основные различия:
| Признак | WHERE | HAVING |
|---|---|---|
| Назначение | Фильтрация строк до группировки | Фильтрация групп после группировки |
| Применение | Применяется к отдельным строкам | Применяется к агрегированным данным групп |
| Исполнение | Выполняется до GROUP BY | Выполняется после GROUP BY |
| Столбцы | Использует столбцы таблицы | Использует столбцы таблицы и агрегатные функции |
Пример с WHERE:
sql
Пример с HAVING:
sql
Пример с обоими операторами:
sql