mysql - 在具有不同 WHERE 条件的 MySQL 中查找不同列的 SUM
问题描述
我有下表称为designerindices
我想做如下的总和和伪代码
SUM(duration1) WHERE designer1 = X AND designerHistSrNumber = 16 +
SUM(duration2) WHERE designer2 = X AND designerHistSrNumber = 16 +
SUM(duration3) WHERE designer3 = X AND designerHistSrNumber = 16 +
SUM(duration4) WHERE designer 4 = X AND designerHistSrNumber = 16
为此,我编写了以下 4 个单独的查询
SELECT SUM(duration1) as sumdur1 FROM designerindices WHERE designerHistSrNumber = 16 AND designer1 = "X"
这应该输出 10
SELECT SUM(duration2) as sumdur2 FROM designerindices WHERE designerHistSrNumber = 16 AND designer2 = "X"
这应该输出 2.4
SELECT SUM(duration3) as sumdur3 FROM designerindices WHERE designerHistSrNumber = 16 AND designer3 = "X"
这应该输出 5
SELECT SUM(duration4) as sumdur4 FROM designerindices WHERE designerHistSrNumber = 16 AND designer4 = "X"
这应该输出 1.1
我必须执行上述查询 4 次。最后添加sumdur1 + sumdur2 + sumdur3 + sumdur4
. 总数应为 18.5
有没有简单直接的方法来代替上述方法?
解决方案
您可以将所有 4 个查询包装在单独的 Select 子句中,并在其中添加,例如
Select (
(SELECT SUM(duration1) as sumdur1 FROM designerindices WHERE designerHistSrNumber = 16 AND designer1 = "X")
+
(SELECT SUM(duration2) as sumdur2 FROM designerindices WHERE designerHistSrNumber = 16 AND designer1 = "X")
+
(SELECT SUM(duration3) as sumdur3 FROM designerindices WHERE designerHistSrNumber = 16 AND designer1 = "X")
+
(SELECT SUM(duration4) as sumdur4 FROM designerindices WHERE designerHistSrNumber = 16 AND designer1 = "X")
) from Dual;
推荐阅读
- arrays - 获取 Swift 数组中的第一个条目
- listview - Flutter :启用文本字段时,背景图像向上移动。“resizeToAvoidBottomInset”禁用滚动。我哪里错了?
- azure - 订阅中的活动消息时更新订阅
- c# - 如何防止 ScintillaNET 控件自动滚动?
- python - 列表数据存储和更新列表
- python - 需要有关此错误的帮助:只能将列表(而不是“str”)连接到列表
- kotlin-flow - kotlin flow 没有从不同的函数发出值
- tensorflow - 限制CNN中不相关图像的概率百分比
- blazor - 如何在 Blazor 中编写自定义值更改事件处理程序?
- python - 如何正确地从文本中获取不会引发 InvalidSchema("No connection adapters were found for {!r}".format(url)) 错误的 URL?