sql 怎么先分组再查询每组中前三天数据?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 怎么先分组再查询每组中前三天数据?相关的知识,希望对你有一定的参考价值。
字段:StudentName , Score , Class 分别为学生姓名,分数,班级 要求查询出每个班级成绩前三的3个人最后按班级排序显示出数据。
SELECT TEST1.STUDENTNAME, TEST1.SCORE, TEST1.CLASSFROM (SELECT STUDENTNAME,
SCORE,
CLASS,
ROW_NUMBER() OVER(PARTITION BY CLASS ORDER BY CLASS, SCORE DESC) ROW_NUM
FROM TABLE_NAME) TEST1
WHERE TEST1.ROW_NUM <= 3
ORDER BY TEST1.CLASS, TEST1.STUDENTNAME
看看是不是你要的,这用到了分组排序编号 参考技术A 有一种比较中规中矩的办法:
先把班级列表插入一张临时表:
select distinct(Class) from table into #abc
用游标循环这张临时表,把每个班级成绩前三的人取出来,插入另外一张临时表:
insert into #result select top 3 * from table where class = @class order by Score desc
最后把#result表select出来
看楼下有没有更简便的办法,可以不用游标 参考技术B mark ,同学习
以上是关于sql 怎么先分组再查询每组中前三天数据?的主要内容,如果未能解决你的问题,请参考以下文章