关于 rank() 、dense_rank() 、row_number() over的理解
Score 表数据如下:
1、rank() over>> 排名相同的两名是并列,但是占两个名次 如:1 1 3 4 4 6
select a.scores, (rank() over (order by scores desc)) AS "rank"
from Score a
2、dense_rank() over >> 相同分数的序号相同, 序号不间断 如: 1 1 2 3 3 4
select a.scores, (dense_rank() over (order by scores desc)) AS "rank"
from Score a
3、row_number() over 这个函数不需要考虑是否并列,哪怕根据条件查询出来的数值相同也会进行连续排名 1 2 3 4 5 6
select a.scores, (row_number() over (order by scores desc)) AS "rank"
from Score a