WHERE применяется до группировки и фильтрует строки результата FROM. HAVING применяется после группировки и фильтрует группы, сформированные с помощью GROUP BY.
Пример:
Предположим, у нас есть таблица orders со столбцами customer_id, order_date и amount.
Найти всех покупателей, у которых общая сумма заказов превышает 1000:
sql
Найти все заказы с суммой более 1000:
sql
Таблица сравнения:
| Признак | WHERE | HAVING |
|---|---|---|
| Применение | К отдельным строкам до группировки | К группам строк после группировки |
| Использует | Столбцы из FROM | Агрегатные функции и столбцы из GROUP BY |
| Выполняется | До GROUP BY | После GROUP BY |
| Агрегатные функции | Не может использоваться напрямую | Может использоваться |