1、dense_rank()
如果分区具有两个或更多具有相同排名值的行,则将为这些行中的每一行分配相同的排名。
与
RANK()
函数不同,DENSE_RANK()
函数始终返回连续的排名值select val,
dense_rank() over (
order by val asc
) my_rank
from t1
+------+---------+ | val | my_rank | +------+---------+ | 1 | 1 | | 2 | 2 | | 2 | 2 | | 3 | 3 | | 4 | 4 | | 4 | 4 | | 5 | 5 | +------+---------+
2、rank() 排名不连续
select val,
rank() over (
order by val asc
) my_rank
from t1
+------+---------+ | val | my_rank | +------+---------+ | 1 | 1 | | 2 | 2 | | 2 | 2 | | 3 | 4 | | 4 | 5 | | 4 | 5 | | 5 | 7 | +------+---------+