| 月 | 价值 | 一种 | b |
|---|---|---|---|
| 六月 | 400 | 50 | 20 |
| 七月 | 空值 | 25 | 10 |
| 八月 | 空值 | 50 | 20 |
我想使用现有值预测未来几个月。
我需要使用计算 400 + 50 - 20 更新 7 月的 NULL 值并获得值 430。然后我需要在计算 (430 + 25 - 10) 中使用 7 月的值 430,它应该返回 445 的值八月。
在给定列 a 和 b 以及初始值的情况下,如何使用 postgreSQL 填充每个月的值列?
| 月 | 价值 | 一种 | b |
|---|---|---|---|
| 六月 | 400 | 50 | 20 |
| 七月 | 空值 | 25 | 10 |
| 八月 | 空值 | 50 | 20 |
我想使用现有值预测未来几个月。
我需要使用计算 400 + 50 - 20 更新 7 月的 NULL 值并获得值 430。然后我需要在计算 (430 + 25 - 10) 中使用 7 月的值 430,它应该返回 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;