dense_rank(),RANK()和row_number()是SQL中的排序函数。
为方便后面的函数差异比对清晰直观,准备数据表如下:
1.dense_rank() 函数语法:dense_rank() over( order by 列名 【desc/asc】)
DENSE_RANK()是连续排序,比如遇到相同的数值时,排序时,是1 2 2 3 序号连续的。
按照分数从高到低排名:
select name,score , dense_rank() over( order by score desc) from test.test001;
按照分数从低到高排序:
2.RANK()函数语法:rank() over(order by 列名【desc/asc】)
RANK()是不连续排序,比如遇到相同的数值时,排序时,是1 2 2 4 ,会跳过3。
比如:
3.row_number()函数语法:row_number() over(order by 列名) 【desc/asc】)
row_number()是不考虑重复数据的,比如遇到相同的数值时,排序时,是1 2 3 4 ,依次排序。
比如: