如何在PostgreSQL中查询两列非唯一组合并统计其出现次数
PostgreSQL查询两列重复组合方案
直接套用以下SQL模板即可满足需求,替换对应占位符为你的实际表、列名:
SELECT col_a AS "col A", col_b AS "col B", COUNT(*) AS count FROM your_table_name GROUP BY col_a, col_b HAVING COUNT(*) > 1 -- 可选:按出现次数倒序排序,方便查看高频组合 ORDER BY count DESC;
逻辑说明
- 用
GROUP BY对两列的组合做分组,所有相同的col_a+col_b取值会被归为同一组 COUNT(*)统计每个分组的总出现次数HAVING子句会过滤掉出现次数等于1的分组,仅保留重复出现的组合- 列别名
"col A"/"col B"用于匹配你给出的示例输出格式,不需要自定义列名可直接删除别名部分
注意:如果查询列允许NULL值,PostgreSQL默认会将多个NULL判定为相同值计入同一分组;如果业务逻辑中NULL需要视为不同值,可将分组条件修改为GROUP BY col_a, col_b, (col_a IS NULL), (col_b IS NULL)。
内容的提问来源于stack exchange,提问作者DevonDahon
相关产品推荐
相关产品推荐

