首页 > 解决方案 > 如何获取分组的ID?

问题描述

我有用于分组值的 sql 脚本

select count(*), equity_name, date, field
from balance
group by equity_name, date, field
having count(*)>1

如何获取每个组的 ID?将来我需要将重复值插入另一个表。

我目前的结果:

当前资源

结果我需要什么:

结果

标签: sqlpostgresql

解决方案


如果要为组分配序列号,可以使用:

select count(*), equity_name, date, field,
       row_number() over (order by equity_name, date, field) as id
from balance
group by equity_name, date, field
having count(*) > 1;

如果您想要一个不依赖于表中数据的组的稳定“名称”,您可以将这些字段连接在一起:

select count(*), equity_name, date, field,
       concat_ws(':', equity_name, date, field) as id
from balance
group by equity_name, date, field
having count(*) > 1;

但是,如果您真的关心随着时间的推移保留组,我建议您将结果保存到具有自动生成identity列的表中。


推荐阅读