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

SQL中是否必须用CASE语句实现客户订单分桶分组统计

问题答复

这类按客户订单数量划分统计分桶的操作不是必须使用CASE语句实现。
你当前编写的代码仅完成了第一层聚合:按客户ID分组统计维度,没有完成第二层按订单数统计对应客户数的聚合,因此无法得到预期结果。
你的需求逻辑分为两步:

  • 先统计每个客户对应的总订单数量
  • 再按统计出的订单数量分组,计数每个订单数档位对应的客户总量
正确实现SQL
SELECT
    COUNT(CustomerID) AS `# of Customers`,
    customer_order_count AS `# of Orders`
FROM (
    -- 第一层聚合:计算每个客户的总订单数
    SELECT
        CustomerID,
        COUNT(Order_date) AS customer_order_count
    FROM Table1
    GROUP BY CustomerID
) AS customer_order_stat
GROUP BY customer_order_count
ORDER BY customer_order_count;
逻辑说明

针对你给出的样例数据,第一层子查询执行后会得到每个客户的订单数:

  • 客户ID 1:1笔订单
  • 客户ID 2:2笔订单
  • 客户ID 3:1笔订单

外层查询按订单数分组计数后,就会输出和你预期完全一致的结果:订单数为1的客户共2个,订单数为2的客户共1个。

注:只有当你需要按自定义区间划分分桶时(例如将订单数划分为「1单」「2-3单」「4单及以上」这类非精确值匹配的档位),才需要使用CASE语句自定义分桶规则,当前按精确订单数统计的场景无需使用CASE。

内容的提问来源于stack exchange,提问作者user12101044

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:54:22