返回每行的行组总和

pse*_*ymo 4 mysql sql

不仅可以为每个单独的行返回满足选择标准的行的列值总和,而且可以为满足相同条件的多个组返回列值的总和吗?

例如,考虑:

id  order_id    quantity
1   1           1
2   1           3
3   1           5
4   2           2
5   2           4
Run Code Online (Sandbox Code Playgroud)

哪些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
Run Code Online (Sandbox Code Playgroud)

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

Gor*_*off 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
Run Code Online (Sandbox Code Playgroud)

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


And*_*mar 2

您可以使用子查询:

select  *
,       (
        select  sum(quantity)
        from    YourTable yt2
        where   yt2.order_id = yt1.order_id
        ) as order_sum
from    YourTable yt1
Run Code Online (Sandbox Code Playgroud)