Расходы пользователей по категориям товаров
Есть таблицы заказов и позиций заказа:
CREATE TABLE orders (
order_id INTEGER PRIMARY KEY,
user_id INTEGER NOT NULL
);
CREATE TABLE order_items (
order_id INTEGER NOT NULL,
item_category TEXT NOT NULL,
item_price REAL NOT NULL,
amount INTEGER NOT NULL
);
Посчитайте, сколько денег каждый пользователь потратил в каждой категории товаров.
Стоимость строки order_items равна item_price * amount.
Верните user_id, item_category, total_spent. Отсортируйте результат по user_id ASC, item_category ASC.
Решение прямо на странице
Напишите код, запустите проверки и только потом открывайте разбор.
Нажмите «Запустить проверки» или Ctrl+Enter.
Показать разбор
Подсказки
- Цена строки
Не забудьте умножить item_price на amount.
- Группировка
Группировать нужно по пользователю и категории, а не только по пользователю.
Идея решения
Соединяем orders и order_items по order_id, чтобы получить пользователя для каждой позиции заказа.
Дальше группируем по user_id и item_category, а сумму считаем как SUM(item_price * amount).
Эталонный код
SELECT
o.user_id,
oi.item_category,
SUM(oi.item_price * oi.amount) AS total_spent
FROM orders o
JOIN order_items oi
ON o.order_id = oi.order_id
GROUP BY o.user_id, oi.item_category
ORDER BY o.user_id ASC, oi.item_category ASC;