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

如何按用户名分组对cat为A、B的counts求和?SQL查询求助

问题分析与解决

你的SQL存在两个核心问题,导致无法实现预期的求和效果:

  • 条件逻辑错误:cat ='A' and cat ='B' 永远不成立,单条记录的cat不可能同时等于A和B;
  • 分组维度错误:按username, cat分组会把A、B、C各自单独统计,无法将A和B的counts合并求和。

正确写法1:通过分组映射合并A/B

先将A和B标记为同一分组,C保持原样,再按新分组字段与用户名聚合求和:

SELECT 
    username,
    SUM(counts) AS catcount
FROM (
    SELECT 
        username,
        counts,
        CASE WHEN cat IN ('A', 'B') THEN 'AB' ELSE cat END AS group_key
    FROM tableA
) t
GROUP BY username, group_key

正确写法2:用UNION ALL拆分统计

分开统计A+B的求和结果,再与C的原始记录合并:

-- 统计A和B的求和结果
SELECT 
    username,
    SUM(counts) AS catcount
FROM tableA
WHERE cat IN ('A', 'B')
GROUP BY username
UNION ALL
-- 保留C的原始记录
SELECT 
    username,
    counts AS catcount
FROM tableA
WHERE cat = 'C'
ORDER BY username, catcount DESC

以上两种写法均可得到你期望的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 06:24:58