我有一个用例,在postgres中使用窗口查询时,我想为每个分区分配一个唯一的递增分区号。
例如,我想要这样的输出:
Partition Key | Row_Num() | Partition Number
Apple | 1 | 1
Apple | 2 | 1
Oranges | 1 | 2
Oranges | 2 | 2
Pear | 1 | 3
Pear | 2 | 3
基本上,除了row_num()在每个“窗口”中为我们提供唯一值之外,我还想为每个“窗口”提供一个唯一的数字
我该如何实现?在postgres中有为此内置的功能吗?
最佳答案
您似乎想要:
select partitionkey,
row_number() over (partition by partitionkey order by partitionkey) as row_num,
dense_rank() over (order by partitionkey) as partition_number
from t;