分时间段查询数据
现在绘制折线图。
查询和显示折线图的参数有查询时间范围,查询粒度,和显示粒度。
查询时间分为按天,按周,按月,按年。
查询粒度有5分钟,15分钟,30分钟,1小时等等。
显示粒度有1小时,2小时。一天,一周,等等。
假设现在查询时间是当天,查询粒度是5分钟,显示粒度是1小时。
查询的sql如何将一天按照5分钟一个粒度来查询呢。
我现在是在sql中进行时间分段查询,时间粒度是5分钟一次:
//第一个5分钟查询语句
SELECT NVL(MAX(DiskSize), 0) KPI_VALUE, KPI_DATE
FROM (SELECT DiskSize,
CASE
WHEN KPI_DATE >=TO_DATE('2011-11-24 00:00:00', 'YYYY-MM-DD HH24:MI:SS') AND
KPI_DATE <=TO_DATE('2011-11-24 00:05:00', 'YYYY-MM-DD HH24:MI:SS') THEN '2011-11-24 00:00:00'
END AS KPI_DATE
FROM NM_DATA.KPI_106
WHERE NE_NODE_ID = 251006
AND KPI_DATE >=TO_DATE('2011-11-24 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
AND KPI_DATE <=TO_DATE('2011-11-24 00:05:00', 'YYYY-MM-DD HH24:MI:SS')
AND VolumnName = 'E:')
GROUP BY KPI_DATE
UNION
//第二个5分钟查询语句
UNION
//第三个5分钟查询语句
UNION
。。。
但是这样查,sql执行效率很慢。假如我查询一周的数据,按照5分钟查询,sql执行的就更慢了。
请问有什么好的方式进行分时间段查询吗?