【发布时间】:2019-08-14 06:32:04
【问题描述】:
我有 2 个表 t1 存储价格和项目类型的 ENUM 值和存储已售数量的 t2。我有一个查询来计算总销售额(价格 * 数量),但我需要计算 2 个结果数字之间的差异。
两个数之差的计算公式应该是:
((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 的值(已经生成)传递到第三列并使用上述公式计算 N1 和 N2 之间的差异?
注意:请注意,这是 2 个数字之间的 百分比差异,而不是 百分比变化,其中 (N2 -N1) / N1 * 100 适用...
提前感谢您的任何回复...
【问题讨论】: