SQL HAVING SUM: отобрать группы по сумме продаж

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

Разберите три этапа: ключ группировки, сумма внутри группы и условие на итог. Обратите внимание на строгое сравнение: «больше порога» и «не меньше порога» дают разные результаты на границе.

Проверьте решение без регистрации. Объяснения и последовательная практика — в курсе «SQL с нуля: бесплатный курс с практикой».

Регионы выше порога

В таблице sales фиксируются отдельные продажи: каждая строка хранит идентификатор, регион, категорию и сумму сделки. Иногда полезно понять, какие регионы действительно весомы в общем обороте, а какие остаются на периферии.

Твоя задача — выяснить, в каких регионах суммарный объём продаж превышает 15 000, и отобрать только их. Результат должен содержать ровно два столбца: region и total, где total — это суммарный amount по региону.

Строки упорядочиваются по total по убыванию: регион с наибольшим оборотом идёт первым. Если у двух регионов совпадает суммарная сумма, они сортируются по названию региона в алфавитном порядке.

Техническая спецификация

Таблица имеет схему sales(sale_id INTEGER, region TEXT, category TEXT, amount INTEGER). Верни ровно два столбца в порядке region, total. Порог строгий: регион с суммой ровно 15000 не включается. Порядок результата: total по убыванию, затем region по возрастанию.

Пример

Подготовка данных
INSERT INTO sales VALUES
    (1, 'Север', 'электроника', 12000),
    (2, 'Юг', 'электроника', 8000),
    (3, 'Север', 'одежда', 3000),
    (4, 'Юг', 'одежда', 5000),
    (5, 'Север', 'электроника', 7000),
    (6, 'Юг', 'одежда', 2000),
    (7, 'Север', 'одежда', 4000);
Вывод
Север|26000
РешениеSQL · SQLite

Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.

Отправьте решение, чтобы увидеть результаты тестов.

Связанные задачи