使用前几行中的值更新 table,然后在下一次计算中使用输出值

Updating a table using values in previous rows and then using the outputted value in the next calculation

月份 价值 一个 b
六月 400 50 20
七月 25 10
八月 50 20

我想使用现有值预测未来月份。

我需要使用计算 400 + 50 - 20 更新 7 月的 NULL 值并获得值 430。 然后我需要在计算 (430 + 25 - 10) 中使用 7 月的值 430,这应该 return 8 月的值 445。

给定列 a 和 b 以及初始值,我如何使用 postgreSQL 为每个月填充这些值列?

如需查询,可使用:

select t.*,
       ( sum(value) over () +
         sum(a + b) over (order by month) - (a + b)
       ) as imputed_value
from t;

注意:这假设 month 确实以某种保留日期的方式存储——例如该月的第一天。如果是字符串,可以使用:

select t.*,
       ( sum(value) over () +
         sum(a + b) over (order by to_date(month, 'Mon')) - (a + b)
       ) as imputed_value
from t;