PostgreSQL查询

3
我是一个使用postgresql的设置,我有一个类似于下面的表格:

sec_id     prod_id
1          789
1          908
1          678
13         789
13         123
13         908
15         789

我希望能够确定 sec_id 中的重叠部分(共同的 prod_ids)。也就是说,我希望能够输出类似以下的内容:
sec_id1    sec_id2    overlap
1          13         2       
1          15         1       
13         1          2       
13         15         1
15         1          1
15         13         1     

我对此没有太多经验,希望能得到任何帮助。
1个回答

2

我习惯使用MySQL,因此您可能需要稍微调整一下语法,以适应Postgres:

SELECT a.sec_id AS sec_id1, b.sec_id AS sec_id2, COUNT(*) AS overlap
FROM tblname AS a JOIN tblname AS b 
WHERE a.prod_id = b.prod_id AND a.sec_id != b.sec_id 
GROUP BY a.sec_id, b.sec_id

很有可能在PostgreSQL(以及MySQL)中会起作用:

SELECT a.sec_id AS sec_id1, b.sec_id AS sec_id2, COUNT(*) AS overlap
FROM tblname AS a JOIN tblname AS b ON a.prod_id = b.prod_id 
WHERE a.sec_id != b.sec_id 
GROUP BY a.sec_id, b.sec_id

非常感谢您。我真诚地感激您的帮助。 - user1028475

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接