Для условий на группы используется HAVING, а WHERE отбирает исходные строки до группировки. Например, HAVING COUNT(*) > 1 оставит группы с несколькими записями.
Как задать условия отбора после выполнения группировки?
Для условий на группы используется HAVING, а WHERE отбирает исходные строки до группировки. Например, HAVING COUNT(*) > 1 оставит группы с несколькими записями.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Для условий на группы используется HAVING, а WHERE отбирает исходные строки до группировки. Например, HAVING COUNT(*) > 1 оставит группы с несколькими записями.
Пример:
SELECT customer_id, COUNT(*) AS orders_count
FROM orders
WHERE status = 'completed'
GROUP BY customer_id
HAVING COUNT(*) > 1;
Сначала логически учитываются завершённые заказы, затем остаются клиенты с более чем одним таким заказом. Это логический смысл запроса, не обещание физического порядка выполнения планом СУБД.