쿼리를 사용해서 하루 중 동시에 구동했던 EQP 가 가장 많았던 값을 알고 싶습니다. 0 3 2,446

by 훈훈후니 쿼리 동시 MAX [2016.05.04 00:07:45]


안녕하세요.

제목이 난해하죠 ;;

 

다름이 아니라 이런것도 쿼리로 가능할지 궁금해서요.

아래와 같은 테이블이 있다고 가정할께요.

EQP

START_TIME (DATE 형식) END_TIME (DATE 형식)
A1 2016-05-03 06:43:30 2016-05-03 11:32:12
A2 2016-05-03 10:23:45 2016-05-03 16:33:21
A3 2016-05-03 11:10:34 2016-05-04 00:23:45

이렇게 있을 때,, GROUP BY 를 일(주,월)로 했을 때 하루 중 동시에 구동중인 EQP 의 개수가 가장 많은 값을 구하는게 쿼리로 가능할까요?

위에 표를 예를 들어 설명하면


2016-05-03 00:00:00 ~ 2016-05-03 06:43:29 : 0 대
2016-05-03 06:43:30 ~ 2016-05-03 10:23:44 : 1 대
2016-05-03 10:23:45 ~ 2016-05-03 11:10:33 : 2 대
2016-05-03 11:10:34 ~ 2016-05-03 11:32:12 : 3 대
2016-05-03 11:32:13 ~ 2016-05-03 16:33:21 : 2 대
2016-05-03 16:33:22 ~ 2016-05-03 23:59:59 : 1 대
→ 동시에 구동중인 EQP 가 가장 많은 대수는 3대임.

 

이렇게요.  이게 도저히 가능할지 모르겠네요 너무 어렵네요 ㅠㅠ

 

고수님들 부탁드립니다.~~

그럼 즐거운 밤 되세요~~


 

by 마농 [2016.05.04 08:21:48]

by 훈훈후니 [2016.05.04 08:59:03]
마농님 너무 감사드립니다.
항상 많은 도움 받고 있습니다. 이번기화에 lecture 함 정주행 해야 겠네요 ㅎㅎ

ps 답글로 달려고 했는데 아이폰에서는 답글 버튼 누르니 안 되네요 ㅎ

by 마농 [2016.05.04 09:10:35]
WITH t0 (eqp, start_time, end_time) AS
(
SELECT 'A1', '2016-05-03 06:43:30', '2016-05-03 11:32:12' FROM dual
UNION ALL SELECT 'A2', '2016-05-03 10:23:45', '2016-05-03 16:33:21' FROM dual
UNION ALL SELECT 'A3', '2016-05-03 11:10:34', '2016-05-04 00:23:45' FROM dual
)
, t AS
(
SELECT eqp
     , TO_DATE(start_time, 'yyyy-mm-dd hh24:mi:ss') start_time
     , TO_DATE(end_time  , 'yyyy-mm-dd hh24:mi:ss') end_time
  FROM t0
)
SELECT *
  FROM (SELECT start_time
             , LEAD(start_time) OVER(ORDER BY start_time) end_time
             , SUM(cnt) OVER(ORDER BY start_time) cnt
          FROM (SELECT DECODE(s, 1, start_time, end_time) start_time
                     , SUM(s) cnt
                  FROM t
                     , (SELECT 3-LEVEL*2 s FROM dual CONNECT BY LEVEL <= 2)
                 GROUP BY DECODE(s, 1, start_time, end_time)
                )
        )
 WHERE cnt > 0
 ORDER BY start_time
;

 

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