最近同学面试找工作,面试官问到了(ROW_NUMBER、RANK、DENSE_RANK)这三大排名函数的区别,他说他确实用过,但是真要说区别,还真不清楚,那么今天就简单聊聊这三大函数的区别,网上也有很多人分享过,但是感觉太复杂了,我尽量做到简单。
第一步:建表。(表结构说明:某个班级中男生女生某一科成绩汇总)。
第二步:验证这三者的区别。
先贴出下面这段SQL,该SQL查询目的:“对班级同学以性别分组后,按成绩的升序排序”
SELECT
t.sex,
t.score ,
ROW_NUMBER() OVER (PARTITION BY t.sex ORDER BY t.score asc) ROW_NUM,
rank() OVER (PARTITION BY t.sex ORDER BY t.score asc) RANK,
DENSE_RANK() OVER (PARTITION BY t.sex ORDER BY t.score asc) DENSE_RANK
FROM
TEST T
由上图女生对应成绩抽出的数据我们不难看出
row_number():不考虑数据的重复性 相同的数据排序番号也不同。
①: 1,2,3,4,5,