postgresql 如何为其他列中的每个组分配唯一值

q3qa4bjr  于 2022-11-23  发布在  PostgreSQL
关注(0)|答案(1)|浏览(123)

我有如下表数据。我希望每个按实体列分组的值都是唯一的。

我尝试了row_number和rank窗口函数,但它们没有给出所需的结果。
预期结果ID列为

在PostgreSQL中是否可以通过实体列数据为每个组获取唯一编号?

ccrfmcuu

ccrfmcuu1#

我相信您正在寻找DENSE_RANK()

with your_table(entity, attribute) as (
  select 'a', 'Car' 
  union all select 'a', 'Car' 
  union all select 'a', 'Bus' 
  union all select 'b', 'Car' 
  union all select 'b', 'Cycle' 
  union all select 'C', 'Car'
  union all select 'D', 'Bus' 
  union all select 'D', 'Motocyle(?)' 
  union all select 'D', 'Car' 
  union all select 'a', 'Cycle' 
  
)
select 
  dense_rank() over (order by entity) as ID, 
  entity, 
  attribute 
from your_table

dbfiddle

相关问题