怎么用sql查询班级前十名成绩的同学的姓名和分数(成绩相同的学生算同一个名次)
4个回答
展开全部
select name,score from (
select name,score,dense_rank() over(order by score) "row" from t )
where "row"=10
select name,score,dense_rank() over(order by score) "row" from t )
where "row"=10
追问
请问
dense_rank() 是什么意思
那两个人成绩相同的话只能显示一个学生的成绩 显示不了第二个人的,我想说的如果有两个人成绩相同时 那么要查找前10名最后显示出来的记录应该是11条记录,题目要求成绩相同算一个名次
追答
现在的不行吗?
你试试"row"<=10
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先用group by以成绩分组,再用top取前十个。
select top 10 姓名,分数 from 成绩表
group by 成绩
select top 10 姓名,分数 from 成绩表
group by 成绩
更多追问追答
追问
那两个人成绩相同的话只能显示一个学生的成绩 显示不了第二个人的,我想说的如果有两个人成绩相同时 那么要查找前10名最后显示出来的记录应该是11条记录,题目要求成绩相同算一个名次
追答
我给的答案就是题目要求的,题目说,“用sql查询班级前十名成绩的同学的姓名和分数(成绩相同的学生算同一个名次)”最后得到的结果还是十个,并且题目只要求前十名成绩的同学的姓名和分数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sql
数据库怎样检索出每个班级里总分数top10的学生姓名,并按班级和总分排名:
select
class,grade
from
student
group
by
class
having top10(grade)
这里用一下top方法就可以定位到你想要的那一行啦
希望我的回答对你会有帮助
数据库怎样检索出每个班级里总分数top10的学生姓名,并按班级和总分排名:
select
class,grade
from
student
group
by
class
having top10(grade)
这里用一下top方法就可以定位到你想要的那一行啦
希望我的回答对你会有帮助
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
取到排名的前十位:
with RK as(
select Stu_score,Stu_name,
DENSE_RANK()over(order by stu_score desc)as rank
from StudentScore) select top 10
RK.* from RK
取到排名的前十名:
with RK as(
select Stu_score,Stu_name,
DENSE_RANK()over(order by stu_score desc)as rank
from StudentScore) select
* from RK where RK.rank <='10'
with RK as(
select Stu_score,Stu_name,
DENSE_RANK()over(order by stu_score desc)as rank
from StudentScore) select top 10
RK.* from RK
取到排名的前十名:
with RK as(
select Stu_score,Stu_name,
DENSE_RANK()over(order by stu_score desc)as rank
from StudentScore) select
* from RK where RK.rank <='10'
追问
top在oracle和mysql里面根本就不能用
追答
我只用过sqlserver 不好意思啊
刚查了一下可以用rownum限制取到的行数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询