>_ IzzyLab

Практическое задание

SQLite: фильтр групп через HAVING

средне

В базе /root/shop.db есть таблица sales(id, category, amount). Найди категории, суммарная выручка которых больше 300, и запиши их названия (по одному в строке) в /root/out.txt.

Что потренируешь:
  • sqlite3
  • having
  • group by
  • фильтр групп
  • агрегаты

Разбор темы

Важно различать два этапа фильтрации в SQL: WHERE отсеивает отдельные строки до группировки и не видит агрегатов, а HAVING применяется после GROUP BY и фильтрует уже готовые группы по значению агрегата. Поэтому условие вида «суммарная выручка группы больше порога» выражается только через HAVING. Порядок клауз фиксирован: сначала группировка, затем условие на группы.

Что проверяется

  1. категория с большой выручкой найдена
  2. категория с малой выручкой отфильтрована

Как это выглядит