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

SQL中如何统计含最终“其他”条件的多CASE语句计数?

如何添加"其余情况"的订单计数?

要统计第四个"其余情况"的订单数量,你只需要在原查询里新增一条COUNT(CASE ...)语句即可。另外先提两个原语句里的小细节修正,避免后续报错或统计不准确:

  • 带空格的列名Device Type,在多数SQL数据库中需要用反引号(如MySQL)或方括号(如SQL Server)包裹,否则会被识别为两个关键字导致语法错误;
  • 原语句中Price IN (2,3)只能匹配价格恰好等于2或3的订单,但需求是"$2-$3之间",如果价格是小数(比如2.5)就会被漏掉,改用Price BETWEEN 2 AND 3能覆盖所有2到3之间的数值(包含边界值)。

下面是修正后包含第四个统计条件的完整查询:

SELECT
  -- 条件1:Device Type为"A"且Price<$2
  COUNT(CASE WHEN `Device Type` = 'A' AND Price < 2 THEN 1 END) AS count_a_under_2,
  -- 条件2:Device Type为"A"且Price在$2-$3之间
  COUNT(CASE WHEN `Device Type` = 'A' AND Price BETWEEN 2 AND 3 THEN 1 END) AS count_a_2_to_3,
  -- 条件3:Device Type为"B"且Price>$3
  COUNT(CASE WHEN `Device Type` = 'B' AND Price > 3 THEN 1 END) AS count_b_over_3,
  -- 条件4:其余所有情况
  COUNT(CASE 
          WHEN NOT (
            (`Device Type` = 'A' AND Price < 2) 
            OR (`Device Type` = 'A' AND Price BETWEEN 2 AND 3) 
            OR (`Device Type` = 'B' AND Price > 3)
          ) THEN 1 END) AS count_others
FROM `table`;

关于第四个条件的逻辑说明

COUNT()函数会自动忽略NULL值,所以当CASE语句的条件不满足时,会返回NULL,不会被计入统计。上面的写法用NOT排除了前三个条件的所有情况,剩下的就是需要统计的"其余情况"。

你也可以用更简洁的方式写第四个CASE:

COUNT(CASE 
        WHEN (`Device Type` = 'A' AND Price < 2) 
          OR (`Device Type` = 'A' AND Price BETWEEN 2 AND 3) 
          OR (`Device Type` = 'B' AND Price > 3) THEN NULL 
        ELSE 1 
      END) AS count_others

两种写法的效果完全一致,选你觉得更容易理解的即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:00:13