请问有如下学生成绩表(学号,课程号,课程成绩),学生基本信息表(学号,姓名等),怎样才能在SQL server中实现查询任意一名同学的每门课程的班级排名欸,就是输入学生学号,先核对学生基本信息表里是否有此人在进行下一步的他所属相关课程的排名统计。
用开窗函数row_number
--所有各科成绩排名
select ROW_NUMBER() over(partition by 课程号 order by 课程成绩 desc)rank,课程号,学号,课程成绩
from 成绩表
--获取对应学号1的各科排名
select ranktb.*,基本信息表.姓名 from 基本信息表,(select ROW_NUMBER() over(partition by 课程号 order by 课程成绩 desc)rank,课程号,学号,课程成绩
from 成绩表)ranktb
where 基本信息表.学号=ranktb.学号 and ranktb.学号=1--查询指定学生加上这个条件
select 课程号, 课程成绩 from 成绩表 where 学号=学生学号 group by 课程号
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!