SQL 分组统计并排序

要求如下:表:table1字段:val值:(如下)2224455统计val并按val分组,然后排列前2名,最后显示得到的val值,用row_number()over.这是... 要求如下:
表:table1
字段:val
值:(如下)
2
2
2
4
4
5
5
统计val 并按val分组,然后排列前2名,最后显示得到的val值,用row_number() over.
这是我做的,但是会返回3条数据(2,4,5),因为4,5并列第二
select top 3 num from (select val, count(1) as num from table1 group by val) order by num desc
展开
 我来答
szm341
2012-08-10 · TA获得超过6726个赞
知道大有可为答主
回答量:5005
采纳率:100%
帮助的人:5145万
展开全部
with tmp as
(select row_number() over(order by count(val)) as rn,val,count(val) as cnum from table1 group by val)
select * from tmp where rn<3
要想区别并列现象还要复杂一些,可能简单的语句解决不了
百度网友87cfcc3
2012-08-07 · 超过14用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:41.3万
展开全部
select top 3 val,count(1) from table1 order by num desc group by val,num order by num desc
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
baiynijecym
2012-08-08 · TA获得超过1841个赞
知道大有可为答主
回答量:1411
采纳率:66%
帮助的人:1163万
展开全部
select top 2 val from (select val, count(1) as num from #table1 group by val) as table2 order by num desc,val
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式