postgresql - 根据PostgreSQL中瞬时时间前后2分钟创建每小时平均值

标签 postgresql average temporal-database

我有一个采样频率为 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/

相关文章:

sql-server - SQL Server 的时态扩展

SQL Server 2016 - 手动设置期间开始和结束日期时间

ruby-on-rails - Rails 4.0 PG::UnableToSend 套接字未打开

java - 从输入/文本文件中查找所有奇数和偶数的平均值

根据移动日期窗口有条件地求和的 SQL 查询

java - 简单的 Java 应用程序,用于计算不定数量的输入数字的平均值

awk - 计算每个转录本的平均外显子数

postgresql - 如何使用命令行参数在后续提示中提供输入(批处理文件)

sql - 找出每个玩家最长的满分连续记录