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

SQL使用Group by按条件分组统计多状态客户数实现方法

按月份统计客户状态分布的SQL实现

核心逻辑分两层聚合:

  • 第一层按Month+CustomerID分组,判定每个客户在对应月份的状态归属:同时存在Accepted/Rejected、仅Rejected、仅Accepted
  • 第二层按Month分组,分别统计三类归属的去重客户总数
-- 使用时将 your_customer_table 替换为实际存储客户数据的表名即可
WITH customer_status_classify AS (
    SELECT
        Month,
        CustomerID,
        CASE
            WHEN SUM(CASE WHEN Status = 'Accepted' THEN 1 ELSE 0 END) > 0
                 AND SUM(CASE WHEN Status = 'Rejected' THEN 1 ELSE 0 END) > 0
                THEN 'both_status'
            WHEN SUM(CASE WHEN Status = 'Accepted' THEN 1 ELSE 0 END) > 0
                THEN 'only_accepted'
            WHEN SUM(CASE WHEN Status = 'Rejected' THEN 1 ELSE 0 END) > 0
                THEN 'only_rejected'
        END AS status_type
    FROM your_customer_table
    GROUP BY Month, CustomerID
)
SELECT
    Month,
    SUM(CASE WHEN status_type = 'both_status' THEN 1 ELSE 0 END) AS `accepted & rejected`,
    SUM(CASE WHEN status_type = 'only_rejected' THEN 1 ELSE 0 END) AS rejected,
    SUM(CASE WHEN status_type = 'only_accepted' THEN 1 ELSE 0 END) AS accepted
FROM customer_status_classify
GROUP BY Month;

兼容性说明:该写法遵循ANSI SQL标准,可直接在MySQL 8.0+、PostgreSQL、SQL Server、Oracle、ClickHouse等绝大多数主流数据库运行。使用示例数据执行后,输出结果和预期完全一致:June维度下双状态客户数1、仅拒绝客户数2、仅通过客户数1。如果使用不支持CTE语法的低版本数据库,可将CTE部分替换为嵌套子查询,逻辑完全相同。

内容的提问来源于stack exchange,提问作者Agustina Garcia Guevara

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:24:30