oracle 日期分组查询

自定义分组规则

            • 前景
            • 实现
            • 例子
            • 在此基础上查询时间所属时间段

前景

在做数据报表时,需要对某一时间段分组,以1小时为时间间隔统计各项数据,如9点-10点,10点-11点…,但是现在有种情况,时间有可能不是整点开始,会有半点的情况,9点30,需要按照9点30-10点30,10点30-11点30分组统计

实现

以时间范围起始时间作为参照时间,计算与其差值(分)/所需时间间隔(1小时)
得出值作为分组依据。

例子
 select xx, 
      floor(
        floor(
         (refDate-to_date('2021-02-05 08:30','yyyy-MM-dd hh24:mi:ss'))
         * 24 * 60) / 60
      ) factor
where    refDate >=to_date('2021-02-05 08:30','yyyy-MM-dd hh24:mi:ss') 
 and  refDate <=....

floor:取整用
refDate:每条数据中的日期字段
2021-02-05 08:30:参照时间
factor:算出的分组依据

oracle 日期分组查询_第1张图片
以上查询范围是21:30-23:30,以21.30作为参照时间,可将时间段划分为21.30-22:30,22:30-23:30。。

在此基础上查询时间所属时间段

oracle 日期分组查询_第2张图片
以上通过 factor/24 含义为间隔一小时, 可以通过改变这两个值任意组合时间间隔。

你可能感兴趣的:(oracel,数据库,oracle)