需求:
从8:30-21:30,按照半个小时时间间隔分组查询统计出此时间段内的请求量
数据库中记录请求时间的表——REQUEST_LOG
(REQUEST_LOG)中的关键字段
- 请求开始时间(request_begintime)
1 SELECT times,count(1) 2 FROM (SELECT FLOOR( T.REQUEST_BEGINTIME ) - 3 TO_DATE(TO_CHAR(T.REQUEST_BEGINTIME,'yyyy-MM-dd'), 4 'yyyy-MM-dd')) * 24 * 3600 / 1800 ) * 1800 / 24 /3600 + 5 TO_DATE(TO_CHAR(T.REQUEST_BEGINTIME,'yyyy-MM-dd'),'yyyy-MM-dd') 6 AS times,T.REQUEST_BEGINTIME 7 FROM REQUEST_LOG T 8 WHERE T.REQUEST_BEGINTIME >= DATE '2020-07-14' 9 AND T.REQUEST_BEGINTIME < DATE '2020-07-15') T1 10 GROUP BY T1.times 11 ORDER BY T1.times
执行上述指令得到结果:
TIMES | COUNT(1) | |
1 | 2020/7/14 17:30:00 | 27 |
2 | 2020/7/14 18:00:00 | 14 |
3 | 2020/7/14 20:00:00 | 20 |
4 | 2020/7/14 20:30:00 | 14 |
注:此时查询显示的 17:30:00的 统计次数 是 17:30:00—18:00:00的发起的请求数量
floor() :
函数返回小于或等于指定值(value)的最小整数,取整
例如:
select floor(83.6) from dual --83
若用ceil函数,显示17:30:00的 统计次数 是 17:00:00—17:30:00的发起的请求数量
ceil() :
函数返回大于或等于指定值(value)的最小整数,取整
例如:
select floor(83.6) from dual --84