如何计算按product_id分组的supplier的DistinctCount总和?
按product_id分组后去重供应商数量求和的解决方案
需求说明
统计每个product_id对应的不同supplier数量,再将这些数量相加得到总和(示例数据的期望结果为10)。
SQL 解决方案
方法1:使用CTE(可读性更高)
WITH product_supplier_stats AS ( SELECT product_id, COUNT(DISTINCT supplier) AS distinct_supplier_count FROM your_table_name -- 替换为你的实际表名 GROUP BY product_id ) SELECT SUM(distinct_supplier_count) AS total_sum FROM product_supplier_stats;
方法2:嵌套子查询(更简洁)
SELECT SUM(distinct_supplier_count) AS total_sum FROM ( SELECT COUNT(DISTINCT supplier) AS distinct_supplier_count FROM your_table_name -- 替换为你的实际表名 GROUP BY product_id ) AS sub;
代码说明:
- 内层查询(或CTE)通过
GROUP BY product_id分组,用COUNT(DISTINCT supplier)计算每个产品对应的唯一供应商数量。 - 外层查询用
SUM()将所有分组的去重数量相加,得到最终总和。
Excel 解决方案
如果用Excel处理数据:
- 插入数据透视表,将
product_id拖到「行」区域,supplier拖到「值」区域。 - 点击值区域的
supplier字段,选择「值字段设置」→ 计算类型改为「计数(去重)」,得到每个产品的唯一供应商数。 - 对透视表中的去重计数列求和,即可得到总结果10。
内容的提问来源于stack exchange,提问作者Jefferson Camillo
相关产品推荐
相关产品推荐

