Агрегатные функции

GROUP BY по нескольким выражениям

В 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_idcategory_idproduct_idcountprice
10063126100.00
10063126100.00
2015121100000.00
20164121500.00
30110714900.00
30288338300.00
30288138300.00
30289144500.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_idcategory_idtotal_price
100652200.00
2015100000.00
201621500.00
301104900.00
3028197700.00

Обрати внимание, что для магазина 201 две записи - для категорий 5 и 6.

    ПредыдущаяСледующая