我具有以下MySQL表结构
id product_id order_id order_shipping shipping_code
1 23 1 2.00 GB
2 12 1 2.00 GB
3 5 2 3.50 GB
4 6 2 3.50 GB
5 34 3 3.00 FR
6 8 3 3.00 FR
7 4 4 5.00 IN
我想按shipping_code
对行进行分组,并包括每个代码的总订单和总运输成本。像这样:
Code Orders Cost
GB 2 5.50
FR 1 3.00
IN 1 5.00
我在总费用中苦苦挣扎。运输成本是针对整个订单的,而不是产品的运费。只是在与同一订单有关的每一行中重复了一次。因此,对于订单1,运费为£2,而不是£4。
我如何对该列求和,但仅对不同的订单行求和?
答案 0 :(得分:1)
要解决每个订单重复的运费,您需要先按order_id对数据进行分组,然后按COUNT
的订单数量和SUM
的运费进行分组:
SELECT code, COUNT(o.shipping) AS orders, SUM(o.shipping) AS cost
FROM (SELECT MIN(shipping_code) AS code, MIN(order_shipping) AS shipping
FROM orders
GROUP BY order_id) o
GROUP BY code
输出:
code orders cost
GB 2 5.5
FR 1 3
IN 1 5
{{3}}