我有一个采样频率为 2 分钟的时态数据库,我想提取每天的瞬时值,如 00:00、01:00、02、... 23。
所以,我想从平均值中得到平均值:
HH-1:58、HH:00 和 HH:02 = HH 点钟的平均值
或
HH-1:59、HH:01 和 HH:03 = HH 点的平均值
示例数据 1:
9/28/2007 23:51 -1.68
9/28/2007 23:53 -1.76
9/28/2007 23:55 -1.96
9/28/2007 23:57 -2.02
9/28/2007 23:59 -1.92
9/29/2007 0:01 -1.64
9/29/2007 0:03 -1.76
9/29/2007 0:05 -1.83
9/29/2007 0:07 -1.86
9/29/2007 0:09 -1.94
预期结果:
午夜 00 点:
(-1.92+-1.64+-1.76)/3
示例数据 2:
9/28/2007 23:54 -1.44
9/28/2007 23:56 -1.58
9/28/2007 23:58 -2.01
9/29/2007 0:00 -1.52
9/29/2007 0:02 -1.48
9/29/2007 0:04 -1.46
预期结果:
(-2.01+-1.52+-1.48)/3
最佳答案
SELECT hr, ts, aval
FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY hr ORDER BY ts) rn
FROM (
SELECT *,
DATE_TRUNC('hour', ts) AS hr,
AVG(value) OVER (ORDER BY ts ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS aval
FROM mytable
) q
) q
WHERE rn = 1
关于postgresql - 根据PostgreSQL中瞬时时间前后2分钟创建每小时平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14382574/