【发布时间】:2019-06-18 12:59:53
【问题描述】:
假设我们有下表存储观察的id 及其address_id。您可以使用以下代码创建表:
drop table if exists schema.pl_address_cnt;
create table schema.pl_address_cnt (
id serial,
address_id int);
insert into schema.pl_address_cnt(address_id) values
(100), (101), (100), (101), (100), (125), (128), (200), (200), (100);
我的任务是计算每个id 有多少其他ids(因此-1)具有相同的address_id。我想出了一个在原始数据集上非常昂贵的解决方案 (explain)。我想知道我的解决方案是否可以以某种方式优化。
with tmp_table as (select address_id
, count(distinct id) as id_count
from schema.pl_address_cnt
group by address_id
)
select id
, id_count - 1
from schema.pl_address_cnt as pac
left join tmp_table as tt on tt.address_id=pac.address_id;
【问题讨论】:
标签: postgresql group-by count