sql查询 从一张表中找到每个班成绩排在第十名的信息。
有一张成绩表st_score,字段有id(自动生成的),number(学号),class(班级),score(成绩),现要从表中找出每个班成绩排在第十名的信息。...
有一张成绩表st_score,字段有id(自动生成的),number(学号),class(班级),score(成绩),现要从表中找出每个班成绩排在第十名的信息。
展开
3个回答
展开全部
--按成绩降序排列 取前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
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
展开全部
--查询10位同学的成绩(top 10)
selet top 10 * from st_score
--按成绩降序排列,也就是从高到低
order by score desc
--按年级分组
group by class
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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名
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询