开窗函数-排名

排名主要利用三种函数

  • rank() 排序相同时重复,总数不会减少

  • dense_rank() 排序相同时重复,总数减少

  • row_number() 排序不重复,总数不变

比如对如下表根据分数进行降序排名

id grade
1 97
2 96
3 95
4 95
5 98
6 94

rank()

id grade rank
5 98 1
1 97 2
2 96 3
3 95 4
4 95 4
6 94 6
1
select id, grade, rank() over(order by grade) as rank from data_table

dense_rank()

id grade rank
5 98 1
1 97 2
2 96 3
3 95 4
4 95 4
6 94 5
1
select id, grade, dense_rank() over(order by grade) as rank from data_table

row_number()

id grade rank
5 98 1
1 97 2
2 96 3
3 95 4
4 95 5
6 94 6
1
select id, grade, row_number() over(order by grade) as rank from data_table

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!