基本上,我试图将公司所有季度的值相加,并将其余部分分组到一个 SQL 查询中。我在这里看到了一些例子,但我无法让它工作。
这是我的查询:
SELECT name, ifnull(q1_2014,0) + ifnull(q2_2014,0) +
ifnull(q3_2014,0) + ifnull(q4_2014) as yearly
select (CASE
WHEN @curRank < 5 THEN yearly ELSE 'others'
END AS yearly)
group others
where country ='Russia';
我的 table 是
Country name q1_2014 q2_2014 q3_2014 q4_2014 Russia CompanyA 6 6 6 6 Russia CompanyB 5 5 5 5 Russia CompanyC 4 4 4 4 Russia CompanyD 3 3 3 3 Russia CompanyE 2 2 2 2 Russia CompanyF 1 1 1 1 Russia CompanyG 1 1 1 1 Russia CompanyH 1 1 1 1 Russia CompanyI 1 1 1 1 Russia CompanyJ 1 1 1 1 Russia CompanyK 1 1 1 1
预期结果应该是每年排名前 5 名的公司的总和与其他公司的剩余总和的总和。
CompanyA 24 CompanyB 20 CompanyC 16 CompanyD 12 CompanyE 8 Others 24
我做错了什么?
最佳答案
检查这个
select IF(rank <=5,name,'others') as Company,sum(yearly) from( SELECT `name`, IFNULL(`q1_2014`,0)+IFNULL( `q2_2014`,0)+ IFNULL(`q3_2014`,0)+ IFNULL(`q4_2014`,0) as yearly,
@curRank := @curRank + 1 AS rank
from Table1,(SELECT @curRank := 0) r where country='Russia' ORDER BY yearly desc) as Table2 group by company
关于Mysql top5 和剩余的总和与其他一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26274949/