mysql获取运行差异

时间:2017-08-20 12:20:51

标签: mysql sql

我有以下表结构和数据:

-----------------------------
|  Date      | Accu. Output |
-----------------------------
| 2017-01-01 |          150 |
| 2017-01-02 |          165 |
| 2017-01-03 |          182 |
| 2017-01-04 |          190 |
| 2017-01-05 |          210 |
-----------------------------

我需要从上面的数据集生成以下输出。我可以做客户端处理。但我正在尝试编写一个查询来获取此信息。

----------------------------------------------
|  Date      |   Accu. Output | Daily Output |
----------------------------------------------
| 2017-01-05 |            210 |           20 |
| 2017-01-04 |            190 |            8 |
| 2017-01-03 |            182 |           17 |
| 2017-01-02 |            165 |           15 |
| 2017-01-01 |            150 |            0 |
----------------------------------------------

每日输出是当前Accu之间的差异。输出和前一天的Accu。输出

由于

1 个答案:

答案 0 :(得分:4)

这是一种使用左连接的方法:

select t.*,
       coalesce(t.accu_output - tprev.accu_output, 0) as diff
from t left join
     t tprev
     on tprev.date = t.date - interval 1 day;

这假设 - 与样本数据一样 - 日期增加,没有间隙,每天只有一个值。您的问题(前一天的输出)隐含了这些条件。