SUM两列并找到最高

时间:2015-03-03 21:22:38

标签: mysql

我想从两个不同的数据库中SUM两列并输出最高值。

试图弄清楚自去年1天以来,但没有运气。有人可以帮忙吗?

Table 1    
mid points    
 1 20  
 2 10 
 1 10 
 1 30
 3 10

Table 2    
mid points    
 1 20    
 2 10
 1 10
 2 20
 1 10
 3 10

所以1中间的总数= 100& 2 = 40& 3 = 20

我想要最高总中位数的输出是1 = 100

2 个答案:

答案 0 :(得分:0)

您的描述有点模糊,但由于此查询是唯一可以给出您描述的结果的查询,我猜这个查询可能就是您想要的。我确信它可以以更智能的方式完成,但它应该有效......

加入表并使用总和和加法:

select t1.id, t1_sum + ifnull(t2_sum,0) as total_sum
from 
    (select id, sum(b1+b2+b3) t1_sum from Table1 group by id) t1 
left join 
    (select id, sum(b4) t2_sum from Table2 group by id) t2 on t1.id = t2.id
order by total_sum desc
limit 1

Sample SQL Fiddle

答案 1 :(得分:0)

标准化设计可能如下所示......

DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,bid INT NOT NULL
,b INT NOT NULL
,val INT NOT NULL
);

INSERT INTO my_table VALUES
( 1  ,1   ,1  ,20),
( 2  ,1   ,2  ,20),
( 3  ,1   ,3  ,20),
( 4  ,2   ,1  ,10),
( 5  ,2   ,2  ,10),
( 6  ,2   ,3  ,30),
( 7  ,1   ,1  ,10),
( 8  ,1   ,2  ,10),
( 9  ,1   ,3  ,10),
(10  ,1   ,4  ,20),
(11  ,2   ,4  ,10),
(12  ,1   ,4  ,10);

......在这一点上查询这样的架构变得微不足道......

SELECT bid,SUM(val) FROM my_table GROUP BY bid [ORDER BY SUM(val) DESC LIMIT 1];
+-----+----------+
| bid | SUM(val) |
+-----+----------+
|   1 |      120 |
|   2 |       60 |
+-----+----------+