查询出排序命令
- row_number()
select 字段名,row_number() over ([partition by 字段] order by score [desc]) from 表名;
row_number()函数:相同值的排名会递增(不会出现重复的排名,若值相同则继续向下递增)。
course score rank
001 54 1
002 66 2
003 66 3
003 78 4
002 89 5
002 90 6
004 99 7
001 99 8
004 100 9
- rank()
select 字段名,rank() over ([partition by 字段] order by score [desc]) from 表名;
rank()函数:相同值的排名相同,但是排名相同的会占位,后续排号跳号。
course score rank
001 54 1
002 66 2
003 66 2
003 78 4 后续排号跳号
002 89 5
002 90 6
004 99 7
001 99 7
004 100 9 后续排号跳号
- dense_rank()
select 字段名,dense_rank() over ([partition by 字段] order by score [desc]) from 表名;
dense_rank()函数:相同值的排名相同,但是排名相同的不会进行占位,后续排号继续。
course score rank
001 54 1
002 66 2
003 66 2
003 78 3 后续排号继续
002 89 4
002 90 5
004 99 6
001 99 6
004 100 7 后续排号继续
关于partition by功能类似于分组,可以实现把需要排序的内容进行分组,但是结果集不会缩减。具体细节,大家可以尝试一下。