两个表上的Mysql sum和group

时间:2016-02-12 11:59:43

标签: mysql

我想从两个不同的表中对两列进行求和,然后按用户ID(uid)对其进行分组。我做了小提琴,但似乎将结果乘以一列中的行数。 http://sqlfiddle.com/#!9/433a5e/3

2 个答案:

答案 0 :(得分:1)

两个表中的每个uid都有多行。因此,对于uid,您将获得一个笛卡尔积 - 一个表中的2行用于uid,而另外3行则变为6行,其中包含大量重复数据。

因此,在进行连接之前聚合数据:

select s.uid, sumscore, sumorder
from (select s.uid, sum(s.score) as sumscore
      from scores s
      group by s.uid
     ) s left join 
     (select o.uid, sum(o.order) sumorder
      from orders o
      group by o.uid
     ) o
     on o.uid = s.uid;

Here是SQL Fiddle中的结果。

答案 1 :(得分:0)

你可能正在寻找这个。试试这个,让我知道它对你有帮助。

SELECT s.uid, SUM(s.score) as score_tot, (SELECT SUM(orders.order) FROM orders WHERE orders.uid = s.uid GROUP BY orders.uid) as order_tot FROM scores as s GROUP BY s.uid

sqlfiddle此处