如何在 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;
我正在寻找一种可以按顺序为每个组分配编号的有效方法。
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;