使用分组求和统计总数量为2的客户数量
统计方法说明
你需要先对客户维度做聚合求和,再过滤符合条件的客户做计数即可,具体实现逻辑和SQL代码如下:
核心逻辑步骤
- 第一步:按
Customer字段分组,对每个客户的Quantity字段做求和聚合,得到每个客户的总数量 - 第二步:过滤出总数量等于2的客户
- 第三步:统计过滤后的客户总条数,就是你要的结果
标准SQL实现代码
子查询写法(兼容所有主流数据库)
SELECT COUNT(*) AS qualified_customer_num FROM ( -- 内层先分组求和+过滤符合条件的客户 SELECT Customer FROM 你的表名 GROUP BY Customer HAVING SUM(Quantity) = 2 ) t;
CTE写法(可读性更好,支持MySQL8.0+/PostgreSQL/SQL Server等新版本数据库)
WITH customer_total_qty AS ( SELECT Customer, SUM(Quantity) total_qty FROM 你的表名 GROUP BY Customer ) SELECT COUNT(*) AS qualified_customer_num FROM customer_total_qty WHERE total_qty = 2;
代码说明
- 聚合后的结果过滤必须用
HAVING子句,不能用WHERE,WHERE作用于分组前的原始行,HAVING作用于分组后的聚合结果 - 把代码里的
你的表名替换为你实际的业务表名即可运行,返回结果就是5,和你预期的一致。
内容的提问来源于stack exchange,提问作者Anju L S
相关产品推荐
相关产品推荐

