表名为APPLICATION_TRAFFIC_DATA,包含三个字段:RECORD_TIME(DATE),LINK_ID(NUMBER(10)),TCP4_BYTE_IN(NUMBER(20)),其作用是用来记录链路的采样信息,每30秒向记录中写7500条记录,现在需要根据RECORD_TIME来计算每五分钟TCP4_BYTE_IN的和,其对应的sql语句如下:
select sum(TCP4_BYTE_IN) from APPLICATION_TRAFFIC_DATA t
where t.record_time>starTime and t.record_time<startTime+5min group by t.LINK_ID.
为了获得一天的统计数据,我需要修改startTime参数重复执行上面的sql语句288次,由于表包含的记录很大,因此统计速度很慢,有没有办法用一个sql语句将一天的采样信息按照每5分钟求和的方式统计出来,谢谢!
select sum(TCP4_BYTE_IN) from APPLICATION_TRAFFIC_DATA t
where t.record_time>starTime and t.record_time<startTime+5min group by t.LINK_ID.
为了获得一天的统计数据,我需要修改startTime参数重复执行上面的sql语句288次,由于表包含的记录很大,因此统计速度很慢,有没有办法用一个sql语句将一天的采样信息按照每5分钟求和的方式统计出来,谢谢!
group by (RECORD_TIME-trunc(sysdate)))1440/5
from APPLICATION_TRAFFIC_DATA t
where t.record_time>starTime and t.record_time <startTime+5min
group by (RECORD_TIME-trunc(sysdate)))1440/5,t.LINK_ID
from APPLICATION_TRAFFIC_DATA t
where t.record_time>starTime and t.record_time <startTime+5min
group by (RECORD_TIME-trunc(sysdate)))*1440/5,t.LINK_ID
然后除以5取整,按此值进行分组group by TRUNC((record_time-TRUNC(record_time))*24*60/5)