GROUP BY и HAVING в SQL: задачи на суммы, NULL и средние

Задачи SQL на GROUP BY, HAVING, COUNT, SUM, AVG и условную агрегацию.

Состав подборки: 4 вопроса с выбором ответа, 1 задание с текстовым ответом, 7 задач на код. Условия и формат проверки указаны на странице каждой задачи.

Разберите маленький пример

У группы A два заказа по 100, у B восемь заказов по 200. Среднее двух средних равно 150, но средний чек всех заказов — (200 + 1600) / (2 + 8) = 180. Для общего показателя нужны согласованные суммы и количества.

На что обратить внимание

  • WHERE отбирает исходные строки, HAVING — группы после агрегации.
  • COUNT(*) считает строки; COUNT(column) пропускает NULL в указанном столбце.
  • Выбирайте ключи группировки под нужную детализацию: один месяц без года может смешать разные периоды.
  • Перед JOIN агрегатов проверьте уникальность их ключей.

Порядок практики

  1. SUM в SQL без подходящих строк: проверьте результат — выбор ответа.
  2. COUNT и AVG в SQL: подсчёт строк и значения NULL — текстовый ответ.
  3. GROUP BY в SQL: найдите неоднозначный bare column — выбор ответа.
  4. GROUP BY по году и месяцу: что означает строка результата — выбор ответа.
  5. WHERE SUM вместо HAVING в SQL: найдите ошибку — выбор ответа.
  6. SQL GROUP BY и SUM: задача на выручку по категориям — код.
  7. SQL HAVING SUM: отобрать группы по сумме продаж — код.
  8. SQL WHERE, GROUP BY и AVG: средний чек по регионам — код.
  9. SQL: Сводные таблицы через условную агрегацию — Сводка способов доставки VIP-клиентов — код.
  10. SQL: Сводные таблицы через условную агрегацию — Сводка платежей с NULL-категориями и прочими статусами — код.
  11. SQL: Взвешенное среднее и агрегация показателей — Общий средний чек через агрегаты категорий — код.
  12. SQL: Логический порядок выполнения SQL — Регион с наибольшей суммой оплаченных заказов — код.

Куда двигаться дальше

База доступна в бесплатном курсе SQL, продолжение с нетривиальными отчётами — платный курс «Продвинутый SQL».

Оконные функции сохраняют отдельные строки.