Что такое GROUP BY и HAVING?

GROUP BY группирует строки по значению одного или нескольких столбцов, а HAVING фильтрует уже сформированные группы. Обычно GROUP BY используют вместе с агрегатными функциями, чтобы получить итоги по каждой группе.
Подробный ответ

Что делает GROUP BY

GROUP BY собирает строки с одинаковыми значениями в группы. Это полезно, когда нужно посчитать что-то по каждой категории: например, количество заказов по городам или сумму продаж по отделам.

Что делает HAVING

HAVING фильтрует группы после того, как они были созданы. В отличие от WHERE, который работает со строками до группировки, HAVING можно применять к агрегированным значениям.

Пример

SELECT city, COUNT(*)
FROM users
GROUP BY city
HAVING COUNT(*) > 10;

Этот запрос сначала группирует пользователей по городу, а потом оставляет только те города, где пользователей больше 10.

Чем GROUP BY отличается от WHERE

WHERE отбирает строки до группировки, а HAVING — группы после группировки. Поэтому если нужно отфильтровать отдельные записи, используют WHERE, а если нужно отфильтровать итоговые группы, используют HAVING.

Как ответить на собеседовании

Я бы объяснил так: GROUP BY нужен, чтобы разбить строки на группы по какому-то полю, а HAVING — чтобы отфильтровать уже получившиеся группы, например по количеству строк или сумме. Важно помнить, что WHERE и HAVING работают на разных этапах запроса.

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге