Junior
100
questionbank
В чем отличие между предложениями WHERE и HAVING в SQL?
Ответ от нейросети
sobes.tech AI
WHERE фильтрует строки перед группировкой. HAVING фильтрует группы, созданные с помощью GROUP BY, после группировки.
WHERE:
- Применяется к отдельным строкам.
- Не может использовать агрегатные функции (
COUNT,SUM,AVG,MIN,MAX). - Выполняется раньше
GROUP BY,HAVINGиSELECT.
HAVING:
- Применяется к группам строк.
- Может использовать агрегатные функции.
- Выполняется после
WHEREиGROUP BY, но доSELECT.
Пример:
Найти клиентов из города 'Москва' (где WHERE) у которых общая сумма заказов превышает 1000 (где HAVING).
SELECT customer_id, SUM(order_amount) -- Выбираем ID клиента и сумму его заказов
FROM orders -- Из таблицы заказов
WHERE city = 'Москва' -- Фильтруем строки до группировки, оставляем только заказы из Москвы
GROUP BY customer_id -- Группируем строки по ID клиента
HAVING SUM(order_amount) > 1000; -- Фильтруем группы, оставляем только группы, где сумма заказов > 1000