Postgresql 使用Postgres中GROUP BY查询中前一行的值更新行
假设我有一张这样的桌子:Postgresql 使用Postgres中GROUP BY查询中前一行的值更新行,postgresql,window-functions,Postgresql,Window Functions,假设我有一张这样的桌子: account_id date value 1 1/1/2015 5 1 1/3/2015 7 1 1/7/2015 8 3 1/2/2015 4 如果我想按日期进行订单,按帐户id分组,并用前一行的值更新每一行,该怎么办 因此,最终结果应该是: account_id date value prev_value 1 1/1/2015
account_id date value
1 1/1/2015 5
1 1/3/2015 7
1 1/7/2015 8
3 1/2/2015 4
如果我想按日期进行订单,按帐户id分组,并用前一行的值更新每一行,该怎么办
因此,最终结果应该是:
account_id date value prev_value
1 1/1/2015 5 null
1 1/3/2015 7 5
1 1/7/2015 8 7
3 1/2/2015 4 null
在单个查询中有什么好方法可以做到这一点吗?窗口函数可以为您做到这一点,它基本上是:
返回值在该值前面的偏移量行处计算的值
分区内的当前行;如果没有这样的争吵,那么改为
返回默认值(必须与值的类型相同)。两者抵消
和默认值是相对于当前行计算的。如果省略,
偏移量默认为1,默认为null
结果:
account_id | date | value | prev_value
------------+----------+-------+------------
1 | 1/1/2015 | 5 |
1 | 1/3/2015 | 7 | 5
1 | 1/7/2015 | 8 | 7
3 | 1/2/2015 | 4 |
(4 rows)
account_id | date | value | prev_value
------------+----------+-------+------------
1 | 1/1/2015 | 5 |
1 | 1/3/2015 | 7 | 5
1 | 1/7/2015 | 8 | 7
3 | 1/2/2015 | 4 |
(4 rows)