需求:
從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