Что делает оператор HAVING в SQL-запросе с группировкой?

AФильтрует строки до агрегации, как WHERE, и не работает с результатами COUNT или SUM
BФильтрует группы после GROUP BY и применяется к результатам агрегатов, например COUNT или SUM
CСортирует результаты группировки, как 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 нужно посчитать сумму продаж только по активным клиентам, при этом не исключая остальных клиентов из итоговой выборки. Какой синтаксис подойдёт?
Тренировать SQL в Telegram

Ещё вопросы по теме «Агрегация, GROUP BY и HAVING»