大家好,
我碰到如下的问题,请问应该怎么与query ?原始数据:
user别使用machine的开始时间 ~ 结果时间。machine            user            from_date                      to_date
M00001          U00001       2019-06-25 13:23          2019-06-25 14:23
M00001          U00001       2019-06-25 18:00          2019-06-27 09:00
M00001          U00002       2019-06-25  09:00         2019-06-25 12:00
M00002          U00001       2019-06-25 14:23          2019-06-25 16:23需要结果machine       user            date                            usetime
M00001      U00001        2019-06-25                    7 ( 1+ 6)
M00001      U00001        2019-06-26                    24
M00001      U00001        2019-06-27                    9
M00002       U00001       2019-06-25                    2
M00001       U00002        2019-06-25                   3说明 : 需要查找 machine别,user别,日期别 machine 使用时间。请问这样的query 应该怎么写呢,请高手们相助一下。谢谢。

解决方案 »

  1.   


    select A.MACHINE,A.USERNAME,
    trunc(GREATEST(a.from_date,TRUNC(from_date)+LEVEL-1)) STARTDATE, 
    sum((LEAST(to_date,TRUNC(from_date)+LEVEL)  -GREATEST(a.from_date,TRUNC(from_date)+LEVEL-1))*24)
    from table_machine a
    connect by prior machine=machine
    and prior username=username
    and prior to_date=to_date
    and prior from_date=from_date
    and level<=trunc(to_date)-trunc(from_date)+1
    and prior sys_guid() is not null
    group by A.MACHINE,A.USERNAME,trunc(GREATEST(a.from_date,TRUNC(from_date)+LEVEL-1)) 
    order by 2,1,3
      

  2.   

    usetime的计算规则是什么,没看懂。