database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 41233 게시물 읽기
No. 41233
oracle 프로시저 추가 질문
작성자
김용완(sonyon21)
작성일
2016-09-07 19:23
조회수
6,406

RAWID   START_DTTS   EDN_DTTS   ROWNUM
1   2016/09/06 오전 8:30:00.000000000   2016/09/06 오전 10:06:48.515000000   1
1   2016/09/06 오전 8:47:53.148000000   2016/09/06 오전 10:19:31.991000000   2
1   2016/09/06 오전 10:04:49.571000000   2016/09/06 오전 10:19:31.991000000   3
1   2016/09/06 오전 10:04:49.571000000   2016/09/06 오후 12:00:37.677000000   4
1   2016/09/06 오전 11:58:16.472000000   2016/09/06 오후 12:27:38.737000000   5
1   2016/09/06 오후 8:59:22.088000000   2016/09/06 오후 9:16:02.652000000   6
1   2016/09/07 오전 1:31:20.082000000   2016/09/07 오전 1:47:53.370000000   7
1   2016/09/07 오전 2:40:37.591000000   2016/09/07 오전 4:56:01.767000000   8
1   2016/09/07 오전 3:06:14.101000000   2016/09/07 오전 4:56:01.767000000   9
1   2016/09/07 오전 3:06:14.101000000   2016/09/07 오전 5:23:16.301000000   10
1   2016/09/07 오전 5:16:49.103000000   2016/09/07 오전 5:23:16.301000000   11
1   2016/09/07 오전 5:16:49.103000000   2016/09/07 오전 5:50:43.439000000   12
1   2016/09/07 오전 5:44:12.553000000   2016/09/07 오전 5:50:43.439000000   13
1   2016/09/07 오전 5:44:12.553000000   2016/09/07 오전 6:18:16.058000000   14
1   2016/09/07 오전 6:11:50.257000000   2016/09/07 오전 6:44:27.119000000   15
1   2016/09/07 오전 6:11:50.257000000   2016/09/07 오전 6:18:16.058000000   16
1   2016/09/07 오전 6:41:48.131000000   2016/09/07 오전 6:49:05.884000000   17
1   2016/09/07 오전 7:46:21.804000000   2016/09/07 오전 8:29:59.999999000   18
6   2016/09/06 오전 8:30:06.515000000   2016/09/06 오전 8:41:23.267000000   19
6   2016/09/06 오전 8:30:17.451000000   2016/09/06 오전 8:41:23.278000000   20
6   2016/09/06 오전 8:41:40.200000000   2016/09/06 오전 8:42:28.852000000   21
6   2016/09/06 오전 8:41:42.203000000   2016/09/06 오전 8:42:37.808000000   22
6   2016/09/06 오전 8:51:03.446000000   2016/09/06 오전 9:11:03.185000000   23
6   2016/09/06 오전 10:05:24.779000000   2016/09/06 오전 10:06:17.406000000   24
6   2016/09/06 오전 10:05:26.786000000   2016/09/06 오전 10:06:26.572000000   25
6   2016/09/06 오전 10:07:33.202000000   2016/09/06 오전 10:18:13.372000000   26
6   2016/09/06 오전 10:07:44.147000000   2016/09/06 오전 10:18:13.379000000   27
6   2016/09/06 오전 10:18:30.098000000   2016/09/06 오전 10:19:18.846000000   28
6   2016/09/06 오전 10:20:15.855000000   2016/09/06 오전 10:31:54.588000000   29

 

내용은 게시글 30305와 동일한 내용인데 다시 한번 기술하면

쿼리 질의를 했을 경우 위와 같이 데이터가 출력이 되고 위 결과를 가지고

작업시간을 구하는 데 로직은 END_DTTS에서 START_DTTS를 빼는것입니다.

그런데 문제는 위 예제 데이터의 구조를 보면 1번째 Row Data의 End_DTTS가 끝나기도 전에 2번째 Row Data의 Start_dtts가 시작을 합니다.

그래서 실제 작업시간을 구할때는 위의 색으로 구분 해놓은 것처럼 RawNUM=5번의 END_DTTS에서 RawNUM=1번의 START_DTTS를 빼야 합니다.

그 담에는 RawNUM=6의 END_DTTS에서 RawNUM=6번의 START_DTTS를 빼야 합니다.

그 이하의 데이터도 색으로  구분해 놓은 블록으로 END_DTTS에서 START_DTTS를 빼야합니다.

 

위와 같은 내용에서 RawID가 추가 되어 Rawid별로 계산을 해야 하는데 마농(manon94)님이 조언해 주신

내용에서 RawId를 추가해서 RawId별로 작업시간을 구할려고 했는데 쉽게 되지 않아 다시 한번 조언을 부탁드립니다. 

아니면 프로시저에서 먼저 Rawid를 가져와서 RawId수만큼 Loop를 돌면서 Rawid를 마농(manon94)의 로직의 Where절에 조건으로 넣어서 한건씩 처리를 해야하는지.. 

그럼 의견 부탁합니다.

 

 

이 글에 대한 댓글이 총 2건 있습니다.

SELECT rawid
     , grp
     , MIN(start_dtts) start_dtts
     , MAX(end_dtts)   end_dtts
     , MAX(end_dtts) - MIN(start_dtts) work_time
  FROM (SELECT rawid
             , start_dtts, end_dtts
             , SUM(flag) OVER(PARTITION BY rawid
                                  ORDER BY start_dtts, end_dtts) grp
          FROM (SELECT rawid
                     , start_dtts, end_dtts
                     , CASE WHEN
                       MAX(end_dtts) OVER(
                       PARTITION BY rawid
                       ORDER BY start_dtts, end_dtts
                       ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING)
                       >= start_dtts
                       THEN 0 ELSE 1 END flag
                  FROM t1
                )
        )
 GROUP BY rawid, grp
 ORDER BY rawid, grp
;

마농(manon94)님이 2016-09-07 19:53에 작성한 댓글입니다.

답변 넘~ 감사드립니다.

 

덕분에 문제가 금방해결됐습니다~

 

오늘도 즐건 하루 되세요~

김용완(sonyon21)님이 2016-09-08 12:08에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
41236토드, sql Developer 의 쿼리결과가 다른이유
최의심
2016-09-08
6368
41235쿼리 질문 드립니다. [2]
궁금이
2016-09-08
6390
41234스토어 프로시져의 파라메터 정보는 어디서 확인가능한가여? [2]
최종길
2016-09-07
6225
41233oracle 프로시저 추가 질문 [2]
김용완
2016-09-07
6406
41232인덱스테이블스페이스 용량문의. [2]
김삼
2016-09-07
6372
41230oracel 프로시저 질문 [2]
김용완
2016-09-06
6447
41227로그성 데이터 쿼리 문의 드립니다. [5]
쿼리OTL
2016-08-29
6883
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.051초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다