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

如何基于非互斥条件对数据表指定列执行求和统计

问题原因

你使用的CASE WHEN是互斥判断逻辑:当某行TextColumn同时包含a和b(比如示例中的ab记录),只会命中第一个LIKE '%a%'的条件,仅被归为a组,不会计入b组统计,和你要求的非互斥统计规则不符,因此结果错误。

解决方法

方法1:UNION ALL 分别统计(兼容所有SQL版本)

分别统计两个分组的求和结果再合并,写法通用无数据库依赖:

SELECT 'a' AS TextGroup, SUM(ValueColumn) AS GroupSum
FROM <Table>
WHERE TextColumn LIKE '%a%'
UNION ALL
SELECT 'b' AS TextGroup, SUM(ValueColumn) AS GroupSum
FROM <Table>
WHERE TextColumn LIKE '%b%'

方法2:行展开后统计(支持LATERAL/UNNEST的数据库可用)

如果后续要新增统计分组,不想重复写UNION语句,可以用规则匹配的方式实现:

-- 以PostgreSQL语法为例
SELECT t.group_name AS TextGroup, SUM(v.ValueColumn) AS GroupSum
FROM <Table> v
JOIN (VALUES ('a', '%a%'), ('b', '%b%')) AS t(group_name, match_pattern)
  ON v.TextColumn LIKE t.match_pattern
GROUP BY t.group_name

两种写法返回的结果都和你的预期一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:36:05