Oracle sql半個小時分組查詢


需求:

從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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM