【发布时间】:2013-02-19 10:47:54
【问题描述】:
我有一个 PostgreSQL 数据库,其中包含一些带有时间戳的记录。
是否有简单的方法在一段时间内(例如一个月,使用 PRECEDING 和 FOLLOWING 表达式)收集窗口中的数据,然后创建包含该月所有记录的多个列(例如,每月每天 30 列)?
让我们考虑这个简单的案例:一个包含两列 timestamp 和 measurement 的表。
我想要的是获得 31 列的表:时间戳和measurement1、measurement2 ... measurement30,其中measurement_i 是时间戳前 i 天的测量值。
【问题讨论】:
-
窗口函数在“windows”上运行。在您的情况下,窗口的定义是什么?我想说这是真正的问题要在这里解决。
-
窗口很简单:
WINDOW w AS ( ORDER BY timestamp RANGE BETWEEN '30 days'::interval PRECEDING AND '0 days'::interval FOLLOWING ) -
是保证每天一排还是会少几天?
标签: sql postgresql crosstab window-functions