You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

分组行值Count(*)统计:按州统计各服务客户数的SQL需求

解决方案:用条件聚合实现按州统计各服务客户数

不需要游标或复杂子查询,条件聚合是处理这类统计需求最简便高效的方案,直接通过一次分组查询就能得到结果。

假设表结构说明

假设你的表名为customer_services,包含列state(州名)、Service1、Service2、Service3(每个客户仅其中一列标记为选中状态,比如值为1/'Y'或非NULL值)。

通用SQL写法(适配大多数场景)

如果服务列是标记型(比如选中为1,未选为0或'N'),用CASE WHEN配合SUM统计:

SELECT
    state AS 唯一州名,
    SUM(CASE WHEN Service1 = 1 THEN 1 ELSE 0 END) AS Service1客户数,
    SUM(CASE WHEN Service2 = 1 THEN 1 ELSE 0 END) AS Service2客户数,
    SUM(CASE WHEN Service3 = 1 THEN 1 ELSE 0 END) AS Service3客户数
FROM customer_services
GROUP BY state
ORDER BY state;

简化写法(适用于服务列为互斥NULL的场景)

如果未选择的服务列值为NULL,可以直接用COUNT统计非NULL值的数量:

SELECT
    state AS 唯一州名,
    COUNT(Service1) AS Service1客户数,
    COUNT(Service2) AS Service2客户数,
    COUNT(Service3) AS Service3客户数
FROM customer_services
GROUP BY state
ORDER BY state;

方案优势

  • 性能远高于游标,一次查询完成所有统计,适合数千条数据的规模;
  • 逻辑清晰,易于理解和维护;
  • 无需嵌套子查询,代码简洁。

内容的提问来源于stack exchange,提问作者Daniel Sh.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 19:36:02