В GROUP BY
можно добавлять несколько выражений через запятую. В таком случае в результат попадут все уникальные комбинации этих выражений.
Рассмотрим заказы в разрезе магазинов и категорий товаров:
SELECT p.store_id,
pr.category_id,
pi.product_id,
pi.count,
pi.price
FROM purchase p
JOIN purchase_item pi
ON pi.purchase_id = p.purchase_id
JOIN product pr
ON pr.product_id = pi.product_id
ORDER BY p.store_id,
pr.category_id
store_id | category_id | product_id | count | price |
---|---|---|---|---|
100 | 6 | 3 | 1 | 26100.00 |
100 | 6 | 3 | 1 | 26100.00 |
201 | 5 | 12 | 1 | 100000.00 |
201 | 6 | 4 | 1 | 21500.00 |
301 | 10 | 7 | 1 | 4900.00 |
302 | 8 | 8 | 3 | 38300.00 |
302 | 8 | 8 | 1 | 38300.00 |
302 | 8 | 9 | 1 | 44500.00 |
Теперь по каждой категории товаров вычислим сумму всех заказов по магазинам:
SELECT p.store_id,
pr.category_id,
sum(pi.count * pi.price) as total_price
FROM purchase p
JOIN purchase_item pi
ON pi.purchase_id = p.purchase_id
JOIN product pr
ON pr.product_id = pi.product_id
GROUP BY p.store_id, pr.category_id
ORDER BY p.store_id,
pr.category_id
store_id | category_id | total_price |
---|---|---|
100 | 6 | 52200.00 |
201 | 5 | 100000.00 |
201 | 6 | 21500.00 |
301 | 10 | 4900.00 |
302 | 8 | 197700.00 |
Обрати внимание, что для магазина 201 две записи - для категорий 5 и 6.