В чем отличие между предложениями WHERE и HAVING в SQL?

WHERE фильтрует строки перед группировкой. HAVING фильтрует группы, созданные с помощью GROUP BY, после группировки.

Короткий ответ

Что ответить на собеседовании

WHERE фильтрует строки перед группировкой. HAVING фильтрует группы, созданные с помощью GROUP BY, после группировки.

Подробный разбор

Ответ с пояснениями

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

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее