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

如何编写SQL查询实现用户各产品购买次数的行转列统计

行转列统计用户各产品购买量

你的需求完全可以实现,这是SQL里常见的**行转列(Pivot)**场景,下面直接给你可行的查询方案:

原表结构(翻译后)

表名:Farm
用户ID | 产品名称
1      苹果
1      橙子
1      苹果
2      葡萄
2      葡萄
3      苹果
4      橙子
3      葡萄
2      苹果

期望结果(翻译后)

用户ID | 苹果 | 葡萄 | 橙子
1       2       0      1
2       1       2      0
3       1       1      0
4       0       0      1

实现SQL(适配绝大多数数据库)

SELECT
  `User` AS 用户ID,
  COUNT(CASE WHEN Product = 'Apple' THEN 1 END) AS 苹果,
  COUNT(CASE WHEN Product = 'Grape' THEN 1 END) AS 葡萄,
  COUNT(CASE WHEN Product = 'Orange' THEN 1 END) AS 橙子
FROM Farm
GROUP BY `User`
ORDER BY `User`;

关键逻辑说明:

  • GROUP BY User 按用户分组,把同一个用户的所有购买记录聚合到一起
  • CASE WHEN 对每条记录判断产品类型,匹配时返回1,不匹配时返回NULL;COUNT函数会忽略NULL值,最终得到该用户对应产品的购买次数
  • 未购买的产品因无匹配记录,COUNT结果自然为0,符合需求

另外,你之前写的CTE(公共表表达式)是多余的,无需额外嵌套,直接从Farm表查询分组即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 14:13:10