mysql - 在mysql中对多列求和并求和它们的别名
问题描述
是否可以sum
列并再次求和?
select
id,
sum(t2.col) as cola,
sum(t3.col) as colb,
sum(t4.col) as colc,
sum(cola + colb + colc) as total
from t1
left join t2 on t2.id = t1.t2fk
left join t3 on t3.id = t1.t3fk
left join t4 on t4.id = t1.t4fk
group by t1.id
像这样的东西
sum(cola + colb + colc) as total
解决方案
您不能使用别名来做到这一点,但您可以通过重写 SELECT 子句来做到这一点,如下所示:
select
id,
sum(t2.col) as cola,
sum(t3.col) as colb,
sum(t4.col) as colc,
sum(t2.col) + sum(t3.col) + sum(t4.col) as total
from t1
left join t2 on t2.id = t1.t2fk
left join t3 on t3.id = t1.t3fk
left join t4 on t4.id = t1.t4fk
group by t1.id
不会有性能损失(即 MySQL 不会“重新汇总”三列来生成总数)
推荐阅读
- pdf - 在 Adobe Acrobat Javascript 中,如何在脚本的某个部分作用于页面之前强制页面变为“可编辑”?
- python - 使用 Seaborn 绘制计算数据的联合图
- sql - CASE WHEN 来自没有子查询的嵌套 CASE WHEN?
- java - 在命令行中编译 Intellij-Project
- javascript - “浏览器”的区别。和“信使”。使用 webextension/javascript API 时
- python - 如何防止嵌套列表被 Python 的 csv.reader 解析为字符串?
- python - Flask - 回传内部请求的响应
- python-3.x - 检查networkx中两个节点之间图的长度(权重)的功能是什么?
- python - 从列表中删除所有实例
- jenkins - 如何在 Jenkins Pipeline 中引用 Maps 变量的映射