如何在 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)
在我的 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)