此问题已在此处有答案:
11年前关闭。
可能重复:
What is the fastest way to truncate timestamps to 5 minutes in Postgres?
Postgresql SQL GROUP BY time interval with arbitrary accuracy (down to milli seconds)
我想在PostgreSQL中以5分钟的间隔聚合数据。如果我使用date_trunc()
函数,我可以按小时、月、日、周等聚合数据。间隔,但不是特定间隔,如5分钟或5天。
select date_trunc('hour', date1), count(*) from table1 group by 1;
如何在PostgreSQL中实现这一点?
2条答案
按热度按时间f45qwnt81#
Postgres 14或更高版本
使用**
date_bin()
**:请参阅:
Postgres 13或更高版本
您可以
GROUP BY
两列:一个时间戳被截断为小时和一个5分钟的时隙。该示例生成插槽
0 - 11
。如果您喜欢1 - 12
,请添加1
。我将
extract()
的结果转换为整数,因此除法/ 5
会截断小数位。结果:分钟0 - 4 ->插槽0
分钟5 - 9 ->插槽1
等
此查询仅返回找到值的那些5分钟时段的值。如果你想要一个值为 * 每 * 插槽或如果你想要一个 * 运行总和 * 超过5分钟插槽,考虑这个相关的答案:
ebdffaop2#
这里有一个简单的查询,你可以 Package 在一个函数中,也可以剪切和粘贴在所有的地方:
它会给你给予当前的时间,和一个从0到n-1的数字,这里n=60.每5分钟一次,300次,以此类推。它从一天开始按秒分组。若要使其按年份开始、小时开始后的秒数或其他值分组,请更改date_trunc中的“d”。