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 39600 게시물 읽기
No. 39600
다시 질문 드립니다. 구분별 시작과 끝 시간 조회
작성자
윤근환
작성일
2012-08-22 11:58
조회수
4,250

구분        시간
1               2012-08-13 오전 11:16:08
1               2012-08-13 오전 11:16:09
1               2012-08-13 오전 11:16:11
2               2012-08-13 오전 11:30:50
2               2012-08-13 오전 11:32:19
1               2012-08-13 오전 11:36:58
1               2012-08-13 오전 11:37:29
2               2012-08-13 오전 11:40:24

구분별로 시작Row의시간과 마지막Row 시간을 알고 싶습니다.

구분        시작시간                                  종료시간
1             2012-08-13 오전 11:16:08    2012-08-13 오전 11:16:11
2             2012-08-13 오전 11:30:50    2012-08-13 오전 11:32:19
1             2012-08-13 오전 11:36:58     2012-08-13 오전 11:37:29
2             2012-08-13 오전 11:40:24     

어떤식으로 해야할지 감이 안서네요. 도와 주세요 고수님들 .

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

WITH tbl_a AS
(
    select '1' gb, '2012-08-13 오전 11:16:08' dt from dual union all
    select '1' gb, '2012-08-13 오전 11:16:09' dt from dual union all
    select '1' gb, '2012-08-13 오전 11:16:11' dt from dual union all
    select '2' gb, '2012-08-13 오전 11:30:50' dt from dual union all
    select '2' gb, '2012-08-13 오전 11:32:19' dt from dual union all
    select '1' gb, '2012-08-13 오전 11:36:58' dt from dual union all
    select '1' gb, '2012-08-13 오전 11:37:29' dt from dual union all
    select '2' gb, '2012-08-13 오전 11:40:24' dt from dual
)
SELECT MIN(gb) gb
     , MIN(dt) sdt
     , MAX(decode(lg, 1, '', dt)) edt
  FROM
  (     
    SELECT gb
         , dt
         , SUM(lg) OVER( ORDER BY dt) grp
         , lg
      FROM
      (    
        SELECT gb
             , dt
             , DECODE( LAG(gb) OVER(ORDER BY dt), gb, 0, 1 ) lg
          FROM tbl_a    
      )
  )      
 GROUP BY grp

마농바라기님이 2012-08-23 09:41에 작성한 댓글입니다.
이 댓글은 2012-08-23 09:43에 마지막으로 수정되었습니다. Edit

SELECT gb
     , MIN(dt) sdt
     , MAX(dt) edt
  FROM (
        SELECT gb, dt
             , ROW_NUMBER() OVER(ORDER BY dt) rn1
             , ROW_NUMBER() OVER(PARTITION BY gb ORDER BY dt) rn2
          FROM tbl_a
        )
 GROUP BY rn1-rn2, gb
 ORDER BY sdt
;

마농(manon94)님이 2012-08-24 11:23에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
39603이상한 쿼리문 [1]
아폴론
2012-08-24
3554
396022건이상인 데이타만 가져오기 문의입니다. [3]
치우천황
2012-08-23
4415
39601집계 및 PIVOT쿼리 질문 [1]
초봉
2012-08-23
4446
39600다시 질문 드립니다. 구분별 시작과 끝 시간 조회 [2]
윤근환
2012-08-22
4250
39599연속 데이타의 구분별 시작과 끝 구하기 [2]
윤근환
2012-08-22
4051
39598SGA의 용량이 부족하게될경우 어떻게 되는지 알고 싶습니다. [2]
임종균
2012-08-21
5366
39597[질문]데이터 없으면 0넣어서 레코드 생성 [1]
샤방
2012-08-21
4405
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다