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

SQL中如何在sum(CASE)语句中使用OR条件合并两列统计结果

问题原因

你编写的SQL逻辑错误出在OR连接的判断条件不完整:OR后直接写字符串常量'second%'不属于合法的布尔判断表达式,SQL不会自动补全省略的u.data LIKE部分,因此条件无法按照预期匹配两类数据。

正确实现方案

根据你的统计需求(统计匹配两类前缀的总记录数,结果为原两列对应行的和),有两种常用写法:

  • 写法1:在CASE语句中写全两个匹配条件,统计不重复的符合条件的记录数(如果单条记录同时匹配两个前缀,只会被计数1次)
sum(
  CASE 
    WHEN u.data LIKE 'first%' OR u.data LIKE 'second%' THEN 1 
    ELSE NULL 
  END
) AS total
  • 写法2:直接将原来两个分类统计的结果相加(如果单条记录同时匹配两个前缀,会被计数2次,和你原两列直接求和的结果完全一致)
sum(CASE WHEN u.data LIKE 'first%' THEN 1 ELSE 0 END) 
+ sum(CASE WHEN u.data LIKE 'second%' THEN 1 ELSE 0 END) 
AS total

结合你给出的预期结果示例,两种写法都能输出你要的total列数值,因为first%和second%前缀互斥,不存在同一条记录同时匹配两个规则的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:48:22