大家好,
我碰到如下的问题,请问应该怎么与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 应该怎么写呢,请高手们相助一下。谢谢。
我碰到如下的问题,请问应该怎么与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 应该怎么写呢,请高手们相助一下。谢谢。
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