我有一张这样简单的table
date day0 day1 day2 day3
2020-01-01 3 2 1 -1
2020-01-02 2 3 1 0
2020-01-03 4 1 -1 2
2020-01-04 5 2 0 1
我想用第(i+1)天的昨天行减去第(i)天的今天行。例如,如果今天是2020-01-02,则预期结果应为
date day0 day1 day2 day3
2020-01-02 0 -2 -2 NaN
0(day0)由2(从2020-01-01 day1)-2(从2020-01-02 day0)获得
-2(第1天)由1(从2020-01-01第2天起)-3(从2020-01-02第1天起)获得
通过-1(从2020-01-01第3天起)-1(从2020-01-02第2天起)获得-2(第2天)
我在考虑选择一个特定的日期和它的“昨天”,然后对“昨天”的行进行换位,然后在两个换位列之间进行减法。但我想可能还有另一种优雅的方式。你能给我一些建议吗?
2条答案
按热度按时间wj8zmpe11#
如果只需要减去两个日期的值,则可以将表与其自身联接:
这假设给定日期实际上有一个前一个日期。如果在日期上有差距,那么这就有点复杂了。
在线示例
bgibtngc2#
你可以用
LAG()
您的要求如下:演示
注意:我没有添加列
day3
因为这个问题没有逻辑。还考虑到表中只有一个日期条目