我是PostgreSQL的新手,我想知道如何在一个表格中汇总15分钟的间隔。
例如:
Table:
time: count
9:01 1
9:05 2
9:13 3
9:20 4
9:21 3
9:35 3
Output:
time count
9:00 - 9:15 6
9:15 - 9:30 7
9:30 - 9:45 3
答案 0 :(得分:0)
我假设您的时间列是实际的日期时间字段,而不仅仅是文本字段。
要计算事件发生的季度,只需使用date_trunc将时间字段截断为最接近的小时。然后,通过将分钟部分除以15来计算它落入的四分之一。之后,您可以使用间隔计算开始/结束时间。
EX:2015年5月12日19:46:41
截止时间到2015年5月12日19:00:00
计算季度为楼层(46/15)= 3
开始时间= 2015年5月12日19:00:00 +间隔'15分钟'* 3(即19:45)
结束时间= 2015年5月12日19:00:00 +间隔'15分-1秒'* 4(即19:59)
现在,您有开始时间和结束时间以及操作计数。你所要做的就是将它们分组并总结。
使用以下表格结构
create table events (
time timestamp,
actions integer
);
运行以下查询可以获得您正在寻找的数据。
SELECT start_time, end_time, sum(actions), count(*)
FROM (
SELECT
date_trunc('hour',time) + (interval '15 minutes'*floor(date_part('minute',time)/15)) as start_time,
date_trunc('hour',time) + (interval '15 minutes -1 second'*(floor(date_part('minute',time)/15)+1)) as end_time,
actions
from events
) as interval_actions
group by start_time, end_time;
我在sql fiddle为你嘲笑了这件事 postgres的日期时间函数列在documentation。
中