查找前几名

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()  会考虑并列成绩,都是第一名就并列第一名(如下图)

posted @ 2015-01-18 20:44  江湖一笑  阅读(243)  评论(0编辑  收藏  举报