gpt4 book ai didi

sql - PostgreSQL 中基于时间戳的移动平均线

转载 作者:行者123 更新时间:2023-11-29 11:09:59 24 4
gpt4 key购买 nike

我想通过时间戳进行移动平均。我有两列:温度和时间戳(时间-日期),我想根据每 15 分钟的连续温度观测值执行移动平均值。也就是说,选择数据以15分钟的时间间隔进行平均。此外,对于不同的时间序列可以有不同数量的观察。我的意思是所有窗口大小都相等(15 分钟),但每个窗口中的观察次数可能不同。例如:对于第一个窗口,我们必须计算 n 个观测值的平均值,对于第二个窗口,我们必须计算 n+5 个观测值的平均值。

数据样本:

ID   Timestamps          Temperature1    2007-09-14 22:56:12 5.392    2007-09-14 22:58:12 5.343    2007-09-14 23:00:12 5.164    2007-09-14 23:02:12 5.545    2007-09-14 23:04:12 5.306    2007-09-14 23:06:12 5.207    2007-09-14 23:10:12 5.398    2007-09-14 23:12:12 5.349    2007-09-14 23:20:12 5.1610   2007-09-14 23:24:12 5.5411   2007-09-14 23:30:12 5.3012   2007-09-14 23:33:12 5.2013   2007-09-14 23:40:12 5.3914   2007-09-14 23:42:12 5.3415   2007-09-14 23:44:12 5.1616   2007-09-14 23:50:12 5.5417   2007-09-14 23:52:12 5.3018   2007-09-14 23:57:12 5.20

主要挑战:

当由于采样频率不同而没有精确的 15 分钟时间间隔时,我如何学习每 15 分钟进行一次区分的代码。

最佳答案

你可以自己加入你的 table :

select l1.id, avg( l2.Temperature )
from l l1
inner join l l2
on l2.id <= l1.id and
l2.Timestamps + interval '15 minutes' > l1.Timestamps
group by l1.id
order by id
;

Results :

| ID |            AVG |
-----------------------
| 1 | 5.39 |
| 2 | 5.365 |
| 3 | 5.296666666667 |
| 4 | 5.3575 |
| 5 | 5.346 |
| 6 | 5.321666666667 |
| 7 | 5.331428571429 |

注意:只有“努力工作”。您应该将结果与原始表连接起来或追加新列以进行查询。我不知道您需要最终查询。调整此解决方案或寻求更多帮助。

关于sql - PostgreSQL 中基于时间戳的移动平均线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13818524/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com