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

SQL如何按用户分组统计各action字符串的出现次数

问题原因

原SQL存在两处错误,导致结果不符合预期:

  • 分组逻辑错误:需求要求按用户维度聚合统计,原语句写的GROUP BY action是按操作类型分组,和需求的分组维度完全不符
  • 未做行转列统计:原语句直接用COUNT(action)只会统计分组下的总操作数,无法把throw/pickup/craft三类操作的计数拆成独立列输出
正确SQL写法

使用条件聚合即可实现需求,该写法兼容所有主流SQL数据库:

SELECT
  userid,
  SUM(CASE WHEN action = 'throw' THEN 1 ELSE 0 END) AS throw,
  SUM(CASE WHEN action = 'pickup' THEN 1 ELSE 0 END) AS pickup,
  SUM(CASE WHEN action = 'craft' THEN 1 ELSE 0 END) AS craft
FROM `playeractions`
GROUP BY userid;
逻辑说明
  • 分组字段改为userid,保证最终结果每个用户仅返回一行统计数据
  • 遍历每一行数据时,通过CASE WHEN匹配当前行的操作类型,匹配到目标操作则记为1,未匹配则记为0,最后用SUM对同个用户下的标记值求和,就能得到该用户对应操作的总执行次数
  • 若用户从未执行过某类操作,对应列的求和结果为0,完全匹配预期输出格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 08:27:04