2012-08-02 48 views
3

满足选择条件的行的列值总和不仅可以返回给每个单独的行,还可以返回多个满足相同条件的组?返回每组行的总和

例如,请考虑:

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 

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

+0

你需要order_sum实际上是列? – 2012-08-02 19:39:29

+0

在大多数其他现代DBMS中,您可以使用分析函数来执行此操作。 MySQL缺少SUM()分析函数,所以Andomar在子查询上进行自连接的答案看起来是次好的。 – 2012-08-02 19:47:32

回答

1

你可以使用子查询:

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

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

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 

把它的优势“从”条款是你可以有多个变量。例如,您可以添加订单数量,最大数量,恰好1个数量出现的次数等等。

0

,你需要有一个子查询,将计算quantitySUM每个Order_ID

SELECT a.*, b.order_sum 
FROM myTable a INNER JOIN 
      (
       SELECT order_ID, 
         SUM(quantity) order_sum 
       FROM myTable 
       GROUP BY order_ID 
      ) b on a.order_ID = b.order_ID