我们可以很容易地得到如下sql结果:
SQL>select Name, Value from table order by Name;
Name Value
------------
A 1
A 2
B 1
C 5
C 6
C 7
然而,有没有一种方法可以将名称与数字联系起来,从而形成不同名称的索引?假设我们不知道表中有多少不同的名字,也不知道它们是什么。
Name Value idx
-----------------
A 1 0
A 2 0
B 1 1
C 5 2
C 6 2
C 7 2
这可以使用窗口函数轻松完成:
select Name,
Value,
dense_rank() over (order by name) - 1 as idx
from table
order by Name;