SQL: Агрегация, оконные вычисления и фильтрация — Категории-лидеры и доля в продажах
Практическая задача по SQL на тему «Агрегация, оконные вычисления и фильтрация». В условии приведены схема таблиц, ограничения данных, имена столбцов результата и порядок сортировки. Напишите один SELECT или WITH-запрос для SQLite. Перед проверкой продумайте пустой результат, повторяющиеся строки и границы диапазонов, если они встречаются в условии. Проверяется результат запроса, поэтому допустима эквивалентная реализация. Сначала решите задачу самостоятельно; продолжение практики доступно в полном курсе продвинутого SQL.
Категории-лидеры и доля в продажах
Что уже дано
Таблица sales(sale_id INTEGER PRIMARY KEY, category_id INTEGER NOT NULL, amount INTEGER NOT NULL). До 500 строк; ID положительные, amount от 0 до 100000. Каждая строка — отдельная продажа.
Что нужно сделать
Сложите суммы по категориям. Верните все категории с максимальной общей суммой и долю каждой в сумме продаж всех категорий. При нулевой общей сумме доля равна NULL.
Ввод и вывод
Отправьте один SELECT или WITH-запрос; stdin и печать не используются. Ровно 3 столбцов в указанном порядке и с этими именами: category_id, total_amount, category_share. category_id и total_amount — INTEGER; category_share — REAL или NULL. Сортировка: category_id ASC. Пустая таблица — пустой результат. В тестовых результатах разделитель |, NULL — пустое поле. Допускается любой эквивалентный запрос.
Пример
- Подготовка данных
INSERT INTO sales VALUES (1,1,30),(2,1,20),(3,2,50),(4,3,25);
- Вывод
1|50|0.4 2|50|0.4
Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.
Отправьте решение, чтобы увидеть результаты тестов.
Связанные задачи
- SQL: Календарная таблица и пропущенные даты — Непрерывный отчёт о звонках
- SQL: Коррелированные подзапросы и EXISTS — Клиенты с завершённым заказом от 1000
- SQL: RFM-анализ на дату среза — RFM и покупки за последний месяц
- SQL: Взвешенное среднее и агрегация показателей — Общий средний чек через агрегаты категорий
- SQL: Выделение пользовательских сессий — Номер сессии и позиция клика
- SQL: Обход дерева: глубина и путь — Пути, корни и листья всего каталога
