代码之家  ›  专栏  ›  技术社区  ›  Pratik Singhal

如何在PostgreSQL中获取组号?

  •  2
  • Pratik Singhal  · 技术社区  · 6 年前

    我有一个用例,在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中有内置的函数吗?

    2 回复  |  直到 6 年前
        1
  •  5
  •   Gordon Linoff    6 年前

    你似乎想要:

    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;
    
        2
  •  3
  •   Yogesh Sharma    6 年前

    你在找 dense_rank()

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