ITPub博客

首页 > 数据库 > Oracle > 求时间段记录去除重复天数的总天数

求时间段记录去除重复天数的总天数

Oracle 作者:T__Mac 时间:2017-07-10 10:28:59 0 删除 编辑
with tmp as
 (select date '2017-1-2' as begin_date, date '2017-1-8' as end_date
    from dual
  union all
  select date '2017-1-2' as begin_date, date '2017-1-4' as end_date
    from dual
  union all
  select date '2017-1-15' as begin_date, date '2017-1-20' as end_date
    from dual
  union all
  select date '2017-1-18' as begin_date, date '2017-1-28' as end_date
    from dual
  union all
  select date '2017-1-19' as begin_date, date '2017-1-20' as end_date
    from dual)
select sum (max(end_date) - min(begin_date)) as total_num
  from (select begin_date,
               end_date,
               max(rn) over(order by begin_date, end_date) as rn
          from (select begin_date,
                       end_date,
                       case
                         when begin_date <= max(end_date)
                          over(order by begin_date,
                                   end_date rows between unbounded
                                   preceding and 1 preceding) then
                          0
                         else
                          row_number() over(order by begin_date, end_date)
                       end as rn
                  from tmp))
 group by rn;

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29530482/viewspace-2141802/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2014-03-10

  • 博文量
    5
  • 访问量
    42939