问题:有一个表 table1,字段为:班级/学生姓名/成绩
表中有多个班级,每个班级有多个学生,每个学生有一个成绩,求出每个班成绩是前5名的列表,要求用一个SQL语句实现,不能用指针/游标/存储过程等.
表样例数据:
班级 学生姓名 成绩
二 帅哥1 66
二 帅哥2 66
二 帅哥3 77
二 帅哥4 88
二 帅哥5 33
二 帅哥6 26
三 美女1 92
三 美女2 77
四 孩子1 35
四 孩子2 66
四 孩子3 53
一 学生1 70
一 学生2 55
一 学生3 90
一 学生4 77
一 学生5 94
一 学生6 78
一 学生7 99要求的结果集:
班级 学生姓名 成绩
二 帅哥4 88
二 帅哥3 77
二 帅哥1 66
二 帅哥2 66
二 帅哥5 33
三 美女1 92
三 美女2 77
四 孩子2 66
四 孩子3 53
四 孩子1 35
一 学生7 99
一 学生5 94
一 学生3 90
一 学生6 78
一 学生4 77
每个班只要前5名,而且要求所有的班级都列出来
表中有多个班级,每个班级有多个学生,每个学生有一个成绩,求出每个班成绩是前5名的列表,要求用一个SQL语句实现,不能用指针/游标/存储过程等.
表样例数据:
班级 学生姓名 成绩
二 帅哥1 66
二 帅哥2 66
二 帅哥3 77
二 帅哥4 88
二 帅哥5 33
二 帅哥6 26
三 美女1 92
三 美女2 77
四 孩子1 35
四 孩子2 66
四 孩子3 53
一 学生1 70
一 学生2 55
一 学生3 90
一 学生4 77
一 学生5 94
一 学生6 78
一 学生7 99要求的结果集:
班级 学生姓名 成绩
二 帅哥4 88
二 帅哥3 77
二 帅哥1 66
二 帅哥2 66
二 帅哥5 33
三 美女1 92
三 美女2 77
四 孩子2 66
四 孩子3 53
四 孩子1 35
一 学生7 99
一 学生5 94
一 学生3 90
一 学生6 78
一 学生4 77
每个班只要前5名,而且要求所有的班级都列出来
解决方案 »
- 时间久了ORACLE数据查找变慢
- linux下安装10g,环境变量的问题
- oracle复杂排序问题?
- 请问在linux下如何统计oracle所有进程的CPU和内存占用率
- Oracle 10g 改变服务器hostname后导至EM不能启动? 如何修复才能使 EM 启动呢?
- 请大家帮我解决一个问题,我到那个帖子给分!
- 有办法读oracle存储过程的参数名称、类型吗
- 多个客户端可以分别向数据库提交(commit)数据么?
- 急,vb.net中怎么用oledb读取、存储blob字段;
- 求教!!!!!!!无归档模式下,一个表空间下有多个dbf文件,其中一个dbf文件被删除,离线数据文件,恢复到open状态,如何能够导出剩下的数据!
- 请问:你觉的这种方案可以实现么?
- oralce单点故障能否自动切换???
select * from (
select t.*,rank() over(partition by 班级 order by 成绩 desc) rk from table1 t
)where rk < 6
select t.*,dense_rank() over(partition by 班级 order by 成绩 desc) rk from table1 t
)where rk < 6