是否可以像下面显示的查询(图 1)那样在 mysql 中添加两个求和值?
我有下面的查询,我正在尝试添加数量和专业。
图一
SELECT
SUM(CASE WHEN value > 0 AND xp = 0 THEN 1 ELSE 0 END) AS qty,
SUM(CASE WHEN value > 1 AND xp = 2 THEN 1 ELSE 0 END) AS pro
SUM(pro + qty)
FROM OrderDetails;
我将需要在整个查询过程中多次使用 qty 和 pro,所以我不想编写如图 2 所示的查询
图 2
SELECT
SUM(
SUM(CASE WHEN value > 0 AND xp = 0 THEN 1 ELSE 0 END)
+
SUM(CASE WHEN value > 1 AND xp = 2 THEN 1 ELSE 0 END)
)
FROM OrderDetails;
已编辑
我在整个查询过程中多次使用 qty 和 pro 的意思如下。
查询示例一 - 是我正在尝试做的,我可以在整个查询过程中多次重复使用 qty 和 pro,比如 sum(pro + qty)
和 having (qty > 0 AND pro > 0)
,而无需重写整个求和语句。
SELECT
SUM(CASE WHEN value > 0 AND xp = 0 THEN 1 ELSE 0 END) AS qty,
SUM(CASE WHEN value > 1 AND xp = 2 THEN 1 ELSE 0 END) AS pro
SUM((pro + qty)/100)
FROM OrderDetails
GROUP BY value
HAVING (
qty > 2
AND
pro > 2
)
;
查询示例 2 - 是我目前必须做的,而且必须重写 SUM(CASE WHEN value > 0 AND xp = 0 THEN 1 ELSE 似乎是非常糟糕的做法0 END)
多次,而不是像上面的查询中那样简单的 qty 或 pro
SELECT
SUM(CASE WHEN value > 0 AND xp = 0 THEN 1 ELSE 0 END) AS qty,
SUM(CASE WHEN value > 1 AND xp = 2 THEN 1 ELSE 0 END) AS pro
SUM((
SUM(CASE WHEN value > 0 AND xp = 0 THEN 1 ELSE 0 END)
+
SUM(CASE WHEN value > 1 AND xp = 2 THEN 1 ELSE 0 END)
)/100)
FROM OrderDetails
GROUP BY value
HAVING (
SUM(CASE WHEN value > 0 AND xp = 0 THEN 1 ELSE 0 END) > 2
AND
SUM(CASE WHEN value > 1 AND xp = 2 THEN 1 ELSE 0 END) > 2
)
;
在 SUM(CASE WHEN value > 0 AND xp = 0 THEN 1 ELSE 0 END) AS 这样的示例中定义一次后是否无法添加
SUM(pro + qty)
数量
最佳答案
您可以使用以下查询进行计算。
SELECT
SUM(CASE WHEN value > 0 AND xp = 0 THEN 1 ELSE 0 END) AS qty,
SUM(CASE WHEN value > 1 AND xp = 2 THEN 1 ELSE 0 END) AS pro,
SUM(CASE
WHEN value > 0 AND xp = 0 THEN 1
WHEN value > 1 AND xp = 2 THEN 1
ELSE 0 END) AS qtyProSum
FROM OrderDetails;
关于mysql - 如何在mysql中添加两个求和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51080141/