mysql - 如何在 GROUP BY 的结果中添加一个额外的列,其值与条件匹配?
问题描述
我正在尝试使用 GROUP BY 生成表的摘要,但我想添加一个值与原始表中的条件匹配的列。我要检查的条件是 style = 2 以便在结果中显示文件名与该样式匹配的新列。
这是原始表格的样子:
category | value | style | filename
A | 8 | 0 | AAA
B | 4 | 2 | BBB
B | 6 | 1 | CCC
A | 3 | 2 | DDD
A | 6 | 1 | EEE
C | 7 | 2 | FFF
B | 5 | 1 | GGG
A | 3 | 1 | HHH
这就是我要的:
category | total_value | filename
A | 20 | DDD
B | 15 | BBB
C | 7 | FFF
我尝试了这个查询,但选择的文件名是 MINIMUM,而不是与 style = 2 匹配的文件名:
SELECT category, SUM(value) AS total_value, MIN(filename) AS filename FROM data GROUP BY category;
解决方案
如果我理解正确,你需要这个:
SELECT category, SUM(value) AS total_value,
MIN(case when style = 2 then filename end) AS filename
FROM data GROUP BY category;
推荐阅读
- django - 本地 -> Github 工作 | 本地-> Heroku 不工作
- javascript - 更新 Javascript 中的按钮
- python - 元素树无法访问没有命名空间的元素
- javascript - 使用 jquery.inline-edit.js 对 Textarea 进行内联编辑 - 获取 id 并保存
- python - f.readlines():如何在没有额外数字的情况下打印
- powerbi - 首次响应时间计算
- r - R - 以变量为条件的两行之间的差异
- c++ - OpenGL 调试上下文警告 - “将使用 VIDEO 内存作为缓冲区反对的来源
- python - 如何使用 websocket 客户端 python 发送二进制数据使用 WebSocketApp(不是 create_connection)
- python - 游戏 AI 一方面很强大,另一方面在井字游戏中变得愚蠢