如何在 Postgres 中获取特定列中相似数据值的数字序列?

How to get number sequence in Postgres for similar value of data in a particular column?

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

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。但我的用例与它略有不同。关于如何通过单个查询完成此操作的任何想法?

您正在寻找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;