Sobes.tech
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