我想从两个不同的数据库中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
答案 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
答案 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 |
+-----+----------+