基于agreement_id与type_id多列去重的prod_category计数查询
解决方案
要实现针对agreement_id和type_id的唯一组合,统计每个cus_id下各prod_category的数量,核心是先去除重复的agreement_id + type_id组合记录,再进行分组统计。
方法一:使用DISTINCT去重后统计
SELECT cus_id, prod_category AS prod_id, COUNT(*) AS count FROM ( -- 提取所有唯一的 cus_id、prod_category、agreement_id、type_id 组合 SELECT DISTINCT cus_id, prod_category, agreement_id, type_id FROM your_table_name -- 替换为你的实际表名 ) AS unique_records GROUP BY cus_id, prod_category ORDER BY cus_id, prod_id;
方法二:使用GROUP BY去重后统计
如果你的SQL方言对DISTINCT和GROUP BY处理有差异,也可以用GROUP BY先去重:
SELECT cus_id, prod_category AS prod_id, COUNT(*) AS count FROM ( -- 通过分组获取唯一组合 SELECT cus_id, prod_category, agreement_id, type_id FROM your_table_name -- 替换为你的实际表名 GROUP BY cus_id, prod_category, agreement_id, type_id ) AS unique_records GROUP BY cus_id, prod_category ORDER BY cus_id, prod_id;
结果说明
以上两种方法都会先过滤掉重复的agreement_id + type_id组合,再按cus_id和prod_category分组计数,最终得到你期望的统计结果。
内容的提问来源于stack exchange,提问作者hjun
相关产品推荐
相关产品推荐

