我有一个表“ district_sensor_data”:
+----------------------------+--------------+-------+
| timestamp | district_id | value |
+----------------------------+--------------+-------+
| 2020-04-06 00:04:20.000000 | 4 | 14 |
| 2020-04-06 00:09:40.000000 | 8 | 15 |
| 2020-04-06 00:06:25.000000 | 11 | 15 |
| 2020-04-06 00:06:45.000000 | 11 | 16 |
| 2020-04-06 00:00:30.000000 | 1 | 36.4 |
| 2020-04-06 00:00:35.000000 | 1 | 39.4 |
+----------------------------+--------------+-------+
这是怎么回事?
这是滑动窗口起作用的地方。
我已经研究过Postgres窗口函数,但是我什至无法达到我想要的目标。
我的主要问题是非连续时间序列,这使得无法使用行数指定窗口大小。有没有一种方法可以将窗口暂时定义为24小时窗口?
然后,我不知道如何使用generate_series()
合并“地面真相”时间序列,以允许每5秒进行一次计算。
几乎唯一可以成功执行但没有为我的目标完成的事情:
SELECT extract(HOURS FROM dsd.timestamp) as hour,
sensor_id,
value,
count(value) OVER (
PARTITION BY district_id, sensor_id
ORDER BY timestamp
)
FROM district_sensor_data dsd;
edit:我更改了帖子以进行一些说明,并删除了sensor_id,因为它实际上与此处无关。抱歉造成混乱。