sql中的排序函数dense_rank(),RANK()和row_number()

dense_rank(),RANK()和row_number()是SQL中的排序函数。
为方便后面的函数差异比对清晰直观,准备数据表如下:
sql中的排序函数dense_rank(),RANK()和row_number()_第1张图片
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;

sql中的排序函数dense_rank(),RANK()和row_number()_第2张图片
按照分数从低到高排序:
sql中的排序函数dense_rank(),RANK()和row_number()_第3张图片

2.RANK()函数语法:rank() over(order by 列名【desc/asc】)
RANK()是不连续排序,比如遇到相同的数值时,排序时,是1 2 2 4 ,会跳过3。
比如:
sql中的排序函数dense_rank(),RANK()和row_number()_第4张图片
3.row_number()函数语法:row_number() over(order by 列名) 【desc/asc】)
row_number()是不考虑重复数据的,比如遇到相同的数值时,排序时,是1 2 3 4 ,依次排序。
比如:
sql中的排序函数dense_rank(),RANK()和row_number()_第5张图片

你可能感兴趣的:(数据库,sql,数据库)