请教一个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行,一条语句写出 展开
name
a
b
c
d
e
f
a
b
c
d
a
a
a
d
e
f
a
这个表有很多重复数据,需要统计重复数最多的前两名,以及排除前两名,所有其他重复项的总和
统计结果类似
b 200
c 180
其他 220
注意结果只有3行,一条语句写出 展开
4个回答
展开全部
我理解太差了,没有看明白……
取和最大的前两名
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
))
展开全部
a.b.c条件,sun函数返回数值总和,值排列10个币
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
(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 )
)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
总和是怎么算出来的?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询