我们知道,over partition by会增加,直到组发生变化。当小组发生变化时,它就会重新开始。如何才能做到相反呢?也就是说,如果没有改变分组,则重复如下数字。
NAME | ROW_COUNT
A 1
A 1
A 1
B 2
C 3
C 3
D 4
E 5
您的场景是使用dense_rank()
,因为rank()
不维护序列,但只是对列进行排序,row_number()
也维护序列,但再次在类似的排名情况下,它分配一个唯一的数字
select name
, dense_rank() over (partition by name order by name)
from table;