Postgresql 获取前几天';postgres中列中的值

Postgresql 获取前几天';postgres中列中的值,postgresql,psql,postgresql-9.2,Postgresql,Psql,Postgresql 9.2,我有个问题 我有一个sql命令,它使用窗口函数获取每天的移动平均值 BEGIN; DROP TABLE IF EXISTS vol_stats; SELECT pk as fk, avg(CAST(volume as FLOAT)) over (partition by account_id order by "endts") as average, INTO vol_

我有个问题

我有一个sql命令,它使用窗口函数获取每天的移动平均值

        BEGIN;
            DROP TABLE IF EXISTS vol_stats;
            SELECT pk as fk, 
                   avg(CAST(volume as FLOAT)) over (partition by account_id order by "endts") as average,
            INTO vol_stats
            from volume_temp
            order by account_id, "endts";
        COMMIT;
我想再得到一个值,那就是前几天的值

数据结构如下所示

acccount_id | value | timestamp 
-------------------------------
a12         | 122   | jan 1
a13         | 133   | jan 1
a14         | 443   | jan 1
a12         | 251   | jan 2
a13         | 122   | jan 2
a14         | 331   | jan 2
a12         | 412   | jan 3
a13         | 323   | jan 3
a14         | 432   | jan 3

acccount_id | value | timestamp | Average | previous
-----------------------------------------
a12         |  122  | jan 1     | 122     | null
a13         |  133  | jan 1     | 133     | null
a14         |  443  | jan 1     | 443     | null
a12         |  251  | jan 2     | 188.5   | 122
a13         |  122  | jan 2     | 222.5   | 133
a14         |  331  | jan 2     | 387     | 443
a12         |  412  | jan 3     | 261.6   | 251
a13         |  323  | jan 3     | 192.6   | 122
a14         |  432  | jan 3     | 402     | 331

我们正在计算这个

acccount_id | value | timestamp | Average
-----------------------------------------
a12         |  122  | jan 1     | 122
a13         |  133  | jan 1     | 133
a14         |  443  | jan 1     | 443
a12         |  251  | jan 2     | 188.5
a13         |  122  | jan 2     | 222.5
a14         |  331  | jan 2     | 387
a12         |  412  | jan 3     | 261.6
a13         |  323  | jan 3     | 192.6
a14         |  432  | jan 3     | 402
有帮助的是抓住前几天的价值。像这样

acccount_id | value | timestamp 
-------------------------------
a12         | 122   | jan 1
a13         | 133   | jan 1
a14         | 443   | jan 1
a12         | 251   | jan 2
a13         | 122   | jan 2
a14         | 331   | jan 2
a12         | 412   | jan 3
a13         | 323   | jan 3
a14         | 432   | jan 3

acccount_id | value | timestamp | Average | previous
-----------------------------------------
a12         |  122  | jan 1     | 122     | null
a13         |  133  | jan 1     | 133     | null
a14         |  443  | jan 1     | 443     | null
a12         |  251  | jan 2     | 188.5   | 122
a13         |  122  | jan 2     | 222.5   | 133
a14         |  331  | jan 2     | 387     | 443
a12         |  412  | jan 3     | 261.6   | 251
a13         |  323  | jan 3     | 192.6   | 122
a14         |  432  | jan 3     | 402     | 331


只需在
选择列表中添加另一列即可:

lag(volume) OVER (PARTITION BY account_id ORDER BY endts)

与您的问题无关,但是:Postgres 9.2是您应该尽快计划升级。