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