【问题标题】:MySQL delta from previous valueMySQL 与先前值的增量
【发布时间】:2021-07-18 16:40:46
【问题描述】:

我有一张这样的桌子:

我需要根据这样的数据顺序添加一个具有先前值的增量值的列:

我怎样才能完成这项任务?

【问题讨论】:

  • 在手册中找到LAG和/或LEAD,并使用它。

标签: mysql select difference delta


【解决方案1】:

您可以使用函数LAGLEAD

一个只有从 0 到 9 的整数值的表的简单示例:

select 
   i, 
   lead(i) over (order by i) as "LEAD", 
   lag(i) over (order by i) as "LAG" 
from numm 
order by i;

会输出这个:

+---+------+------+
| i | LEAD | LAG  |
+---+------+------+
| 0 |    1 | NULL |
| 1 |    2 |    0 |
| 2 |    3 |    1 |
| 3 |    4 |    2 |
| 4 |    5 |    3 |
| 5 |    6 |    4 |
| 6 |    7 |    5 |
| 7 |    8 |    6 |
| 8 |    9 |    7 |
| 9 | NULL |    8 |
+---+------+------+

【讨论】:

  • 好的,我已经接近解决方案了,但我需要这样的东西,我可以在滞后值和行的实际值之间产生差异。正确的代码是什么? : 'select i, lag(i) -i over (order by i) as "LAG" from numm order by i;'
  • over (order by ....) 是表达式的一部分,因此您需要执行 lag(i) over order by i) - i(但您可以在 1 分钟内自己测试...?
猜你喜欢
  • 1970-01-01
  • 2011-09-18
  • 2016-03-06
  • 2013-05-27
  • 2021-04-04
  • 1970-01-01
  • 2016-03-30
  • 1970-01-01
  • 2014-08-25
相关资源
最近更新 更多