sql - 如何在 Postgres 中将 15 分钟时间序列聚合为 1 小时间隔
问题描述
在我的 PostgreSQL 数据库中,我有一个非常大(超过 4000 万)的行表,它通过 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
ETC...
我想要做的是将所有这些 15 分钟的记录“汇总”成 1 小时的间隔,这样01:00:00
-01:45:00
等于01:00:00
(凌晨 1 点)
我的问题与这个问题类似,但答案是关于 MySQL 的,我不确定这种语法是否适用于 Postgres 应用程序。
有没有办法可以用 Postgres 中的 SQL 脚本来处理这个问题?
解决方案
你会使用date_trunc()
. 例如按小时计算:
select date_trunc('hour', ts), count(*)
from t
group by date_trunc('hour', ts)
推荐阅读
- java - Java,无法从文件中读取
- c# - 我可以抛出非托管异常进行测试吗?
- networking - 2个节点可以只用1个tcp连接同时交换数据吗?
- ubuntu - 如何在ansible中获取dnsdomainname值
- ruby-on-rails - ActiveAdmin:某些字段的单独表单
- python - 在 Pandas 中分配列值时的冗余计算
- powershell - 使用未登录的用户运行计划任务
- c++ - 如何以编程方式区分在内存的堆和堆栈部分创建的对象
- regex - 如何使用 sed 删除第三个下划线和逗号之间?
- node.js - express js中的多部分表单数据抛出错误