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

如何用SQL按cus_id分组统计不同prod_id频次及income总和

优化后的查询方案

你的初始查询按cus_id和prod_id分组,得到的是每个用户对应单个产品的拆分统计结果,但要实现将不同prod_id的计数转为列展示的需求,需要使用条件聚合实现行转列效果,同时仅按cus_id分组即可。

优化后的SQL语句

SELECT
  cus_id,
  SUM(CASE WHEN prod_id = 10 THEN 1 ELSE 0 END) AS `count(prod_id = 10)`,
  SUM(CASE WHEN prod_id = 20 THEN 1 ELSE 0 END) AS `count(prod_id = 20)`,
  SUM(CASE WHEN prod_id = 30 THEN 1 ELSE 0 END) AS `count(prod_id = 30)`,
  SUM(income) AS `sum(income)`
FROM t
GROUP BY cus_id;

语句说明

  • 条件聚合逻辑:通过CASE WHEN判断每条记录的prod_id是否匹配目标值,匹配返回1、不匹配返回0,再用SUM累加得到对应prod_id的出现次数(也可替换为COUNT(CASE WHEN prod_id=10 THEN 1 END),COUNT会自动忽略NULL值)。
  • 分组调整:仅按cus_id分组,确保每个用户只生成一行汇总结果。
  • 收入总和计算:直接用SUM(income)即可得到每个用户的收入总和,无需额外分组维度。

执行结果验证

运行上述语句后,会输出你期望的格式:

cus_id     count(prod_id = 10)    count(prod_id = 20)    count(prod_id = 30)     sum(income)
100                2                     1                 0                280
122                0                     1                 1                 19

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 12:55:23