postgresql 用以前的时间值回填时间序列数据

ee7vknir  于 2022-11-23  发布在  PostgreSQL
关注(0)|答案(1)|浏览(123)

我有一个时间序列数据表,其中的序列有一些间隔。下面是一个数据示例:
| 日期|数值|
| - -|- -|
| 2022年11月17日|一个|
| 2022年11月14日|2个|
我想在现有行(2022-11-15、2022-11-16)之间插入日期行,这些行的值为插入日期(2022-11-14行)之前的最新日期。
我开始在我的应用程序编程语言中使用命令式解决方案,但我确信在SQL中一定有一种方法可以做到这一点。

vatpfxk5

vatpfxk51#

demo:db<>fiddle

INSERT INTO mytable                               -- 5

SELECT
    generate_series(                              -- 1
        mydate + 1,                               -- 2
        lead(mydate) OVER (ORDER BY mydate) - 1,  -- 3
        interval '1 day'                          
    )::date as gs,
    t.myvalue                                     -- 4
FROM mytable t;

1.使用generate_series()生成日期序列
1.日期系列的开始是行日期值的下一天
1.日期序列的结束日期是下一行日期值的前一天。
1.使用函数生成的日期和新生成行的实际行值。
1.最后将它们插入到表中。

相关问题