Что делает оператор HAVING в SQL-запросе с группировкой?
AФильтрует строки до агрегации, как
WHERE, и не работает с результатами COUNT или SUMBФильтрует группы после
GROUP BY и применяется к результатам агрегатов, например COUNT или SUMCСортирует результаты группировки, как
ORDER BY, по значениям агрегатных функцийDСчитает агрегаты по группам, как
COUNT или SUM, и не выполняет фильтрацию данныхПравильный ответ.
HAVING фильтрует уже агрегированные группы, в отличие от WHERE, который фильтрует строки до агрегации.Разбор
WHERE применяется до агрегации и фильтрует строки, а HAVING — после GROUP BY и фильтрует группы по значениям агрегатов. Пример: SELECT dept, COUNT(*) FROM users GROUP BY dept HAVING COUNT(*) > 5;. Сортировкой занимается ORDER BY, а сами агрегаты считают функции вроде COUNT или SUM — это разные роли в запросе.
Проверь себя · 1/3разбор после ответа
В PostgreSQL нужно посчитать сумму продаж только по активным клиентам, при этом не исключая остальных клиентов из итоговой выборки. Какой синтаксис подойдёт?
Ещё вопросы по теме «Агрегация, GROUP BY и HAVING»
- Что делает оператор `DISTINCT` в `SELECT`-запросе?
- Есть таблица `orders(user_id, amount)`. Какой запрос посчитает сумму всех заказов по каждому пользователю?
- Нужно посчитать сумму оплаченных заказов по каждому пользователю. В таблице `orders` есть поля `user_id`, `amount`, `status`. Какой запрос корректен и наиболее эффективен?
- В таблице пользователей есть колонка `middle_name`, в которой часто хранится `NULL`. Что вернёт выражение `COUNT(middle_name)`?
- Нужно получить количество заказов по паре (`user_id`, `status`) из таблицы `orders`. Какой запрос верный?
- Все вопросы по «Агрегация, GROUP BY и HAVING» →