我有一个用例,在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;

09-05 15:29