如何在postgresql中获取组号?

How to get group number in postgresql?

我有一个用例,在 postgres 中使用 window 查询时,我想为每个分区分配一个唯一的递增分区号。

例如,我想得到这样的输出:

Partition Key | Row_Num() | Partition Number  
Apple         | 1         | 1
Apple         | 2         | 1
Oranges       | 1         | 2
Oranges       | 2         | 2
Pear          | 1         | 3
Pear          | 2         | 3

基本上,除了在每个 "window" 中为我们提供唯一值的 row_num() 之外,我希望每个 "window" 都有一个唯一的数字 我如何实现这一目标? 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;

您正在寻找dense_rank()

. . .
dense_rank() over (order by PartitionKey) as number