Назад к вопросам
Junior
105
questionbank
В чем разница между предложениями WHERE и HAVING в SQL?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
WHERE применяется до группировки и фильтрует строки результата FROM. HAVING применяется после группировки и фильтрует группы, сформированные с помощью GROUP BY.
Пример:
Предположим, у нас есть таблица orders со столбцами customer_id, order_date и amount.
Найти всех покупателей, у которых общая сумма заказов превышает 1000:
SELECT customer_id, SUM(amount)
FROM orders
GROUP BY customer_id
HAVING SUM(amount) > 1000;
Найти все заказы с суммой более 1000:
SELECT customer_id, order_date, amount
FROM orders
WHERE amount > 1000;
Таблица сравнения:
| Признак | WHERE | HAVING |
|---|---|---|
| Применение | К отдельным строкам до группировки | К группам строк после группировки |
| Использует | Столбцы из FROM |
Агрегатные функции и столбцы из GROUP BY |
| Выполняется | До GROUP BY |
После GROUP BY |
| Агрегатные функции | Не может использоваться напрямую | Может использоваться |