sql 怎么先分组再查询每组中前三天数据?

字段:StudentName,Score,Class分别为学生姓名,分数,班级要求查询出每个班级成绩前三的3个人最后按班级排序显示出数据。... 字段:StudentName , Score , Class 分别为学生姓名,分数,班级 要求查询出每个班级成绩前三的3个人最后按班级排序显示出数据。 展开
 我来答
殇忄路
2014-10-24 · TA获得超过561个赞
知道小有建树答主
回答量:478
采纳率:81%
帮助的人:331万
展开全部
SELECT TEST1.STUDENTNAME, TEST1.SCORE, TEST1.CLASS
FROM (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
看看是不是你要的,这用到了分组排序编号
x24682340
2014-10-24
知道答主
回答量:8
采纳率:0%
帮助的人:1.2万
展开全部
有一种比较中规中矩的办法:

先把班级列表插入一张临时表:
select distinct(Class) from table into #abc

用游标循环这张临时表,把每个班级成绩前三的人取出来,插入另外一张临时表:
insert into #result select top 3 * from table where class = @class order by Score desc

最后把#result表select出来

看楼下有没有更简便的办法,可以不用游标
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ormgp
2014-10-24
知道答主
回答量:64
采纳率:0%
帮助的人:22.7万
展开全部
mark ,同学习
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式