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 40916 게시물 읽기
No. 40916
앞뒤 row 비교하기
작성자
김고운(KKW)
작성일
2015-09-01 17:03
조회수
8,265

 

막 sql 공부하기 시작한 초보자 입니다 ㅠㅠ 도움요청드리려 글 남깁니다.

아래와같이 테이블이 있다고 가정할때.. (rnum 컬럼은 ID 값 별로 start_time을 오름차순으로 하여 numbering 함)

 

ID   |   start_time    |     end_time     |   rnum   

1         09 : 00                   09 : 10              1

1         09 : 14                   09 : 35               2

1         09 : 25                   10  :  00             3

2        09 : 00                   09 : 15              1

2         09 : 05                  09 : 25               2

2         09 : 24                  09: 30                3

 

공통 ID에 대하여 rnum=n 의 end_time 과 rnum=n+1의 start_time 값을 비교하여

start_time (rnum=n+1) > end_time (rnum = n) 이면 '비연속', 그렇지 않으면 '연속' 이라고 신규 컬럼을 추가하려 합니다.

(rnum =1 값은 무조건 '연속' 으로 부여)

 

즉, 아래와 같은 [연속 유무] 컬럼을 계산해서 얻고싶은건데... 어떻게 해야하나요? ㅠㅠㅠ

ID   |   start_time    |     end_time     |   rnum    |    연속 유무

1         09 : 00                   09 : 10              1                  연속

1         09 : 14                   09 : 35               2               비연속

1         09 : 25                   10  :  00             3                  연속

2        09 : 00                   09 : 15              1                    연속

2         09 : 05                  09 : 25               2                   연속

2         09 : 24                  09: 30                3                   연속

 

 

 

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

SELECT id, start_time, end_time
     , ROW_NUMBER() OVER(PARTITION BY id ORDER BY start_time) rnum
     , CASE WHEN LAG(end_time) OVER(PARTITION BY id ORDER BY start_time)
               < start_time
            THEN '비연속' ELSE '연속' END 연속유무
  FROM t
;

마농(manon94)님이 2015-09-01 17:38에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
40920디폴트 idle timeout 값 [4]
8925
2015-09-02
9394
40919테이블에 컬럼 생성일시와 누가 생성했는지 확인 가능하나요? [1]
정준민
2015-09-01
8097
40917오라클 클라이언트와 엔진의 차이? [2]
초보자
2015-09-01
8103
40916앞뒤 row 비교하기 [1]
김고운
2015-09-01
8265
40914erwin 사용법 [1]
가영
2015-08-30
8758
40911같은 이름중에서 코드가 일부 상이한 번호 찾기 [5]
초보네
2015-08-27
8637
40910ssh로 sqlplus 실행 시 command not found [1]
새내기
2015-08-27
8695
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.025초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다