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

SQL如何将聚合行透视转为列 获取单行多列聚合计算结果

问题根因

你的查询返回两行、同行两列值重复的原因很明确:

  • GROUP BY name会按name的不同值拆分结果集,'x'和'y'会各自生成独立的结果行
  • 两个计算列都没有加name匹配条件,每行计算的都是当前分组的price总和/quantity总和比值,所以同一行的x、y值完全相同
解决方案

用条件聚合替代按name分组即可实现单行输出两个指标的需求,正确SQL语句如下:

SELECT
  ROUND(SUM(CASE WHEN name = 'x' THEN price ELSE 0 END) / SUM(CASE WHEN name = 'x' THEN quantity ELSE 0 END), 2) AS x,
  ROUND(SUM(CASE WHEN name = 'y' THEN price ELSE 0 END) / SUM(CASE WHEN name = 'y' THEN quantity ELSE 0 END), 2) AS y
FROM orders
WHERE name IN ('x', 'y') AND year = 2022;
逻辑说明
  • 计算x列时,仅累加name为'x'的符合筛选条件的记录的price和quantity,做除法后保留两位小数,返回结果3.33
  • 计算y列时,仅累加name为'y'的符合筛选条件的记录的price和quantity,做除法后保留两位小数,返回结果2.20
  • 去掉GROUP BY name后,查询最终只返回一行聚合结果,和你预期的输出完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 23:27:35