일자관련 발생횟수 문의드립니다. 0 3 664

by 레알 [2016.03.22 14:04:30]


안녕하세요

한달동안 당직 선날중에서 동일날 당직을 2개 서면 오래근무한 시간만 구하고, 발생건수도  한건으로 구하려고 합니다.

데이터는 아래와 같습니다.

사번 당직일 당직형태 시작시간 종료시간
11 20160206 30 0800 1400
11 20160206 40 0800 1800
11 20160213 30 0800 1400
11 20160213 40 0900 1900
11 20160220 30 1200 1700

제가원하는 데이터는 아래와 같이 나와야 합니다.

사번 당직일 시작시간 종료시간 발생건수
11 20160206 0800 1800 1
11 20160213 0900 1900 1
11 20160220 1200 1700 1

도움 부탁드립니다...

 

 

by swlee [2016.03.22 14:30:28]
with t (eno, dt, status, stime, etime) as ( 
select '11', '20160206', 30, '0800', '1400' from dual union all
select '11', '20160206', 40, '0800', '1800' from dual union all 
select '11', '20160213', 30, '0800', '1400' from dual union all 
select '11', '20160213', 40, '0900', '1900' from dual union all 
select '11', '20160220', 30, '1200', '1700' from dual
)
select eno, dt, stime, etime,rn
from (
      select  eno, dt, stime, etime,row_number() over(partition by eno,dt order by gb desc) rn
      from (
              select  eno, dt, stime, etime
                   , to_date(etime,'hh24mi') - to_date(stime,'hh24mi') gb
              from t)
) 
where rn = 1;

 


by 마농 [2016.03.22 14:55:03]
SELECT *
  FROM (SELECT eno, dt, status, stime, etime
             , ROW_NUMBER() OVER(PARTITION BY eno, dt ORDER BY etime - stime DESC) rn
          FROM t
        )
 WHERE rn = 1
;

 


by 레알 [2016.03.22 15:22:36]

swlee, 마농 님 감사합니다~

덕분에 잘 해결 되었습니다^^

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입