GROUP BY и HAVING в SQL: агрегации, SUM, COUNT

47 задач Лёгкие, средние, сложные С эталонными решениями Решение в браузере
GROUP BY и HAVING — база, без которой SQL-аналитика не существует. Порядок выполнения запроса: SELECT … FROM … WHERE … GROUP BY … HAVING — и путаница WHERE vs HAVING это запрос №1 на junior-собесе. На middle добавят COUNT(DISTINCT), CASE WHEN внутри агрегации, GROUPING SETS. 33 задачи от простых SUM до условных агрегаций для маркетинговых отчётов.
Начать решать задачи →

Все задачи на «Агрегации» (47)

FAQ: частые вопросы про агрегации

Чем WHERE отличается от HAVING?

WHERE фильтрует строки ДО группировки. HAVING фильтрует группы ПОСЛЕ применения GROUP BY (можно использовать агрегатные функции в условии). Порядок: FROM → WHERE → GROUP BY → HAVING → SELECT.

COUNT(*) vs COUNT(column) vs COUNT(DISTINCT column)?

COUNT(*) считает все строки. COUNT(column) — строки где column не NULL. COUNT(DISTINCT column) — уникальные не-NULL значения column.

Можно ли использовать HAVING без GROUP BY?

Да. Без GROUP BY вся выборка считается одной группой, и HAVING фильтрует её целиком — например, SELECT COUNT(*) FROM orders HAVING COUNT(*) > 100 вернёт строку, только если заказов больше 100.

Связанные темы SQL

JOIN-запросы · Оконные функции · CTE (Common Table Expressions) · Подзапросы · Работа с датами · Строковые функции · Условная логика · Retention-анализ

Открыть весь SQL-тренажёр (576 задач) →