查找前几名
1. 查找前几名
--25、查询各科成绩前三名的记录:(不考虑成绩并列情况) --不考虑重复
SELECT courseid,score,row_number() OVER
(PARTITION BY courseid ORDER BY score DESC) AS rn FROM tblScore
--考虑重复
SELECT courseid,score,dense_rank() OVER
(PARTITION BY courseid ORDER BY score DESC) AS rn FROM tblScore
partition by关键字是分析性函数的一部分,它和聚合函数不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录,
partition by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组
如果没有 partition by ---,他将根据 order by 的 score 进行排序,
partition by(函数窗口说明)
如果有 partition by courseID,他将根据 coureid进行分组,然后对分组的数据进行分别排序
row_number() 不考虑有没有并列成绩的,直接按1,2,3---排序(如上图)
dense_rank() 会考虑并列成绩,都是第一名就并列第一名(如下图)