如何统计拥有多个唯一bd_fk的exp_fk的数量?
解决方案
你的需求是统计拥有多于1个唯一bd_fk的exp_fk的数量,原SQL的问题在于同时按exp_fk和bd_fk分组,且判断的是单个bd_fk的重复次数,完全偏离了需求方向。
正确的实现思路分两步:
- 第一步:按
exp_fk分组,计算每个exp_fk对应的非空唯一bd_fk数量 - 第二步:统计上述结果中数量大于1的
exp_fk的总个数
对应的SQL语句如下:
SELECT COUNT(*) AS target_count FROM ( SELECT exp_fk FROM your_table_name WHERE bd_fk IS NOT NULL GROUP BY exp_fk HAVING COUNT(DISTINCT bd_fk) > 1 ) AS sub_query;
语句说明:
- 子查询部分:先过滤掉
bd_fk为空的记录,再按exp_fk分组,用COUNT(DISTINCT bd_fk)统计每个exp_fk关联的唯一bd_fk数量,最后通过HAVING筛选出数量大于1的exp_fk - 外层查询:统计子查询返回的行数,就是符合要求的
exp_fk的数量,对应示例中的预期结果1
如果需要查看具体是哪些exp_fk满足条件,直接查询子查询的内容即可:
SELECT exp_fk, COUNT(DISTINCT bd_fk) AS unique_bd_count FROM your_table_name WHERE bd_fk IS NOT NULL GROUP BY exp_fk HAVING COUNT(DISTINCT bd_fk) > 1;
内容的提问来源于stack exchange,提问作者Anthony
相关产品推荐
相关产品推荐

