MySQL - 如何计算每行的差异&领域?

时间:2016-06-15 10:27:51

标签: mysql database

我在MySQL中有以下表格:

Date   | Item A   | Item B   | Item C   | Item D
------------------------------------------------
1/1/16 | 1        | 0        | 3        | 1
1/2/16 | 3        | 3        | 4        | 0
1/3/16 | 10       | 4        | 8        | 1
1/4/16 | 5        | 3        | 8        | 3

输出应该是一个新表,其中包含每个项目与前一天相比的价值差异。样本表的输出将是一个包含以下内容的新表:

Date   | Item A   | Item B   | Item C   | Item D
------------------------------------------------
1/2/16 | 2        | 3        | 1        | -1
1/3/16 | 7        | 1        | 4        | 1
1/4/16 | -5       | -1       | 0        | 2

我想用一个MySQL命令来实现这一点。我目前有类似的东西:

SELECT SUM(Item A) AS DIFF 
FROM my_table
WHERE date = '1/1/16'

输出“1”。但这并不接近我所期待的......

感谢您的帮助和输入。

1 个答案:

答案 0 :(得分:0)

要计算同一个表的两行之间的差异,您需要自己加入表,这样您就可以在查询内的同一行中拥有2行的值。

测试它:

SELECT t1.ItemA, t2.ItemA, t1.ItemA-t2.ItemA AS DiffA, 
       t1.ItemB, t2.ItemB, t1.ItemB-t2.ItemB AS DiffB
FROM my_table t1, my_table t2
WHERE t1.date = '1/2/16' AND
      t2.date = '1/1/16'

注意:根据ItemA的确切字段类型,您可能需要执行此操作(在我的情况下需要这样做):CAST(t1.ItemA AS signed) - CAST(t2.ItemA AS signed) AS DiffA