sql查询 从一张表中找到每个班成绩排在第十名的信息。

有一张成绩表st_score,字段有id(自动生成的),number(学号),class(班级),score(成绩),现要从表中找出每个班成绩排在第十名的信息。... 有一张成绩表st_score,字段有id(自动生成的),number(学号),class(班级),score(成绩),现要从表中找出每个班成绩排在第十名的信息。 展开
 我来答
飘雨56
推荐于2018-03-04 · 一分耕耘一分收获,凡事预则立
飘雨56
采纳数:931 获赞数:4490

向TA提问 私信TA
展开全部
--按成绩降序排列 取前10个即可
select a.number,b.class,b.score from st_score as a
join (
select top(1) t.class,t.score from (
select top 10 class,score from st_score
group by class
order by score desc) as t order by t.score) as b
on a.class=b.class and a.score=b.score
order by b.class,b.score desc
lei3844
2014-02-19 · TA获得超过1432个赞
知道小有建树答主
回答量:389
采纳率:66%
帮助的人:216万
展开全部
--查询10位同学的成绩(top 10)
selet top 10 * from st_score
--按成绩降序排列,也就是从高到低
order by score desc
--按年级分组
group by class
追问
我要的是第十名啊 不是前十啊
追答
select top 1 * from st_score
--取不在前九名的成绩,也就是第十名了 ,前面那个top 1 用来控制从第十位开始的个数
where score not in (select top 9 score from st_score)
order by score desc
group by class
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
D调的聪
2014-02-19 · TA获得超过241个赞
知道小有建树答主
回答量:220
采纳率:100%
帮助的人:167万
展开全部
SELECT * FROM (SELECT ROW_NUMBER() OVER(PARTITION BY class ORDER BY score DESC) AS NewPx, * FROM st_score) a WHERE a.NewPx=10
追问
sql server 2008有这个功能么?有点看不懂,顺便解释一下!
追答
sql server 2008有这个功能,测试过了
你去查下 ROW_NUMBER 这个的用法就应该能清楚了
思路就是先按 班级 排序 成绩,并为其加一列序列号来表示其排名,然后再根据这排名来找出第10名
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式