一张学生成绩表
StudentID    Name     Score     Class
1            张三     85         1
2            李四     95         1
3            王六     34         2
4
5
6  
多个班级的学生成绩放在了一个表里面,要求查询出每个班级前5名的学生,注意,是每个班级前5名,如果
有6个班级就要查询处30条记录,谢谢

解决方案 »

  1.   

    必须用一个SQL语句写出来吗?如果用PL/SQL块的话,很方便呀。
      

  2.   

    select * from (
    select StudentID,Name,Score,Class,rank() over(partition by Class order by Score desc) rk from table)
    where rk <= 5
      

  3.   

    根据不同的需求,可以试下把rank() 换成row_number()或dense_rank(),要求数据库在8i以上
      

  4.   

    楼上的OVER()涵数用的很好,有机会得向你请教请教.我现在身边的同事认识你啊