gpt4 book ai didi

MySQL根据SUM列别名计算两列之间的百分比差异(不变)

转载 作者:行者123 更新时间:2023-11-29 02:39:42 27 4
gpt4 key购买 nike

我有 2 个表 t1,其中存储价格和项目类型以及一个 ENUM 值和 t2,其中存储销售数量。我有一个计算总销售额(价格 * 数量)的查询,但我需要计算两个结果数字之间的差值。

两个数之差的计算公式应该是:

((N1 - N2)/((N1 + N2)/2)) * 100

使用上面的公式,我需要计算 N1 和 N2 之间的百分比差异。这两个数字都是基于 col_type 中的 2 个 ENUM 值的 2 个单独的 SUM 案例的结果(请参见下文)

SELECT
CONCAT('£ ',SUM(CASE WHEN t1.col_type = 'N1' THEN t2.qty * t1.price ELSE 0 END)) AS 'Total N1',
CONCAT('£ ',SUM(CASE WHEN t1.col_type = 'N2' THEN t2.qty * t1.price ELSE 0 END)) AS 'Total N2'
FROM t2
INNER JOIN t1
ON t2.col_id = t1.col_id

结果输出应该是这样的:

+----------+----------+------------------------+
| Total N1 | Total N2 | Diff between N1 and N2 |
+----------+----------+------------------------+
| 3765.50 | 3246.15 | 14.81% |
+----------+----------+-----------------------

我的问题是如何将 N1 和 N2 的值(已生成)传递到第 3 列并使用上述公式计算 N1 和 N2 之间的差异?

注意:请注意,这是两个数字之间的百分比差异,而不是百分比变化,其中 (N2 -N1)/N1 * 100 适用...

预先感谢您的任何回复...

最佳答案

您对“差异”的定义很奇怪。为此,使用子查询:

SELECT CONCAT('£ ', n1) AS Total_N1,
CONCAT('£ ', n2) AS Total_N2,
100 * (N1 - N2) / (N1+N2) / 2 as diff
FROM (SELECT SUM(CASE WHEN t1.col_type = 'N1' THEN t2.qty * t1.price ELSE 0 END) as n1,
SUM(CASE WHEN t1.col_type = 'N2' THEN t2.qty * t1.price ELSE 0 END) as n2
FROM t2 INNER JOIN
t1
ON t2.col_id = t1.col_id
) t

关于MySQL根据SUM列别名计算两列之间的百分比差异(不变),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55313709/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com