如何在 Postgres 中将 15 分钟时间序列聚合为 1 小时间隔

How to Aggregate 15 minute Time series into 1 hour intervals in Postgres

在我的 PostgreSQL 数据库中,我有一个非常大的行(超过 4000 万)table,它代表 15 分钟间隔时间戳(包含在“开始时间”列中)的各个位置的流量计数).我想将这些间隔合并为每小时间隔以减少行数。

格式为“不带时区的时间戳”,因此每条记录如下所示:

2020-04-26 01:00:00
2020-04-26 01:15:00
2020-04-26 01:30:00
2020-04-26 01:45:00
等...

我想做的是获取所有这些 15 分钟的记录并将它们“汇总”为 1 小时的间隔,以便 01:00:00- 01:45:00 等于 01:00:00(凌晨 1 点)

My question is similar to this one 但答案是关于 MySQL 的,我不确定这种语法是否适合 Postgres 应用程序。

有没有办法在 Postgres 中使用 SQL 脚本来处理这个问题?

您将使用 date_trunc()。例如按小时计算:

select date_trunc('hour', ts), count(*)
from t
group by date_trunc('hour', ts)