【问题标题】:How to get number sequence in Postgres for similar value of data in a particular column?如何在 Postgres 中获取特定列中相似数据值的数字序列?
【发布时间】:2021-07-13 15:48:11
【问题描述】:

我正在寻找一种有效的方法,可以按顺序为每个组分配数字。

Record  Group     GroupSequence
-------|---------|--------------
1       Car       1
2       Car       2
3       Bike      1
4       Bus       1
5       Bus       2
6       Bus       3

我遇到了这个问题:How to add sequence number for groups in a SQL query without temp tables。但我的用例与它略有不同。关于如何通过单个查询完成此任务的任何想法?

【问题讨论】:

    标签: sql database postgresql group-by grouping


    【解决方案1】:

    您正在寻找row_number():

    select t.*, row_number() over (partition by group order by record) as group_sequence
    from t;
    

    您可以在需要时计算它,因此我认为没有理由存储它。但是,您可以根据需要更新这些值:

    update t
        set group_sequence = tt.new_group_sequence
        from (select t.*,
                     row_number() over (partition by group order by record) as new_group_sequence
              from t
             ) tt
        where tt.record = t.record;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-06
      • 2023-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-16
      相关资源
      最近更新 更多