mysql获取运行差异

Lak*_*tne 1 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 |
-----------------------------
Run Code Online (Sandbox Code Playgroud)

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

----------------------------------------------
|  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 |
----------------------------------------------
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Gor*_*off 5

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

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;
Run Code Online (Sandbox Code Playgroud)

这假设 - 就像在您的示例数据中一样 - 天数在增加,没有间隔并且每天只有一个值。您的问题(前一天的输出)暗示了这些条件。