返回每行的行组总和

时间:2012-08-02 19:37:46

标签: mysql sql

符合选择标准的行的列值总和是否不仅可以返回每个单独的行,而且可以返回符合相同条件的多个组?

例如,考虑:

id  order_id    quantity
1   1           1
2   1           3
3   1           5
4   2           2
5   2           4

MySQL SELECT查询可以返回以下结果:

id  order_id    quantity    order_sum
1   1           1           9
2   1           3           9
3   1           5           9
4   2           2           6
5   2           4           6

编辑: 后续问题:假设结果是从具有多个条件的查询生成的,那么在最终查询中如何处理这些条件?

3 个答案:

答案 0 :(得分:5)

您可以在“from”子句中使用子查询:

select  t.*, tsum.sumquantity
from t join
     (select t.orderid, sum(quantity) as sumquantity
      from t
      group by t.order_id
     ) tsum
     on t.orderid = tsum.orderid

将它放在“from”子句中的优点是可以有多个变量。例如,您可以添加订单数量,最大数量,出现1个数量的次数,等等。

答案 1 :(得分:1)

您可以使用子查询:

select  *
,       (
        select  sum(quantity)
        from    YourTable yt2
        where   yt2.order_id = yt1.order_id
        ) as order_sum
from    YourTable yt1

答案 2 :(得分:0)

您需要有一个子查询,为每个SUM计算quantity的{​​{1}}

Order_ID