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

时间:2019-03-23 12:27:40

标签: mysql sql

我有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之间的差?

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

在此先感谢您的回复...

1 个答案:

答案 0 :(得分:1)

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

char *