请教一个sql去重排序求和的问题 10

这是简单的一个表结构nameabcdefabcdaaadefa这个表有很多重复数据,需要统计重复数最多的前两名,以及排除前两名,所有其他重复项的总和统计结果类似b200c... 这是简单的一个表结构
name
a
b
c
d
e
f
a
b
c
d
a
a
a
d
e
f
a
这个表有很多重复数据,需要统计重复数最多的前两名,以及排除前两名,所有其他重复项的总和
统计结果类似
b 200
c 180
其他 220

注意结果只有3行,一条语句写出
展开
 我来答
发生等将发生
2016-09-19 · TA获得超过478个赞
知道小有建树答主
回答量:653
采纳率:75%
帮助的人:327万
展开全部
我理解太差了,没有看明白……
取和最大的前两名
select top 2 name from (
select name,sum(num) n from table
group by name) t
where t.n desc

不包含前两名的所有人
select name from table 
where name not in(
select top 2 name from (
select name,sum(num) n from table
group by name) t
where t.n desc
)

名字取出了,那么现在就求和,前面的只是给你看看,最终综合成下面这样的一条语句,如果你需要效率高点,将not in修改为not exists,还有,你给的东东也不全,我就按照大概意思手打出来的,要是有错误,见谅,但是思路和这个差不多,你看看是不是你要的
前两名分组求和
select top 2 name,n from (
select name,sum(num) n from table
group by name) t
where t.n desc

 union all

其他的求和,使用union链接
select '其他',
(select sum(num) from table
where 
name not in(
select top 2 name from (
select name,sum(num) n from table
group by name) t
where t.n desc
))
河底的鱼
2016-09-19 · TA获得超过562个赞
知道小有建树答主
回答量:330
采纳率:0%
帮助的人:161万
展开全部
a.b.c条件,sun函数返回数值总和,值排列10个币
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
615812324
2019-07-27
知道答主
回答量:23
采纳率:0%
帮助的人:5.2万
展开全部
(select name, n
from (select name,count(name) n from test group by name) t 
ORDER BY t.n DESC
LIMIT 2)

union all

(select '其他' name, count(name) n
from test
where name not in
(SELECT * FROM(select name from (select name,count(name) n from test group by name) t ORDER BY t.n DESC LIMIT 2) as a )
)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阳光的雷咩咩
2016-09-18 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7852万
展开全部
总和是怎么算出来的?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式