데이타베이스 : Interbase
만들고자 하는 SQL 문 내용
회원 테이블
각 회원별로 1 개월간 나온 날자를 가지고 있는 테이블
각 회원별로 1개월동안 나온 날자를 비교하여 가장 많이 빠진 날자를 구할 수 있나요 ?
예를 들면
홍길동이란 회원인 3월 1,2,3,4,5,8,9,10,15,16...
이런식으로 나왔다면
검색할 때 처음레코드와 다음레코드의 날자를 비교하고 또 그다음날자를 비교
(즉 홍길동이란 회원이 1달간 나온 자료를 가지고 바로 앞의 레코드와 현재레코드를
비교) 하여 가장 차이가 많이 나는 기간이 얼마인지를 알 수 있는 방법
1과 2일의 차이는 0
2와 3일의 차이는 0
3과 4일의 차이는 0
4와 5일의 차이는 0
5와 8일의 차이는 2
8과 9일의 차이는 0
9와 10일의 차이는 0
10과 15일의 차이는 4
결과는 4
위와 같은 SQL문을 아래와 같은 형식으로 만드는 SQL문이 작성이 가능한가요 ?
회원명 기간
홍길동 4
김말동 3
다나가 8
장길산 7
.
.
.
SQL문 고수님의 답변 학수고대하겠습니다.
CREATE TABLE A (
MAN CHAR(6) NOT NULL,
NAL CHAR(2) NOT NULL .... 값은 '01', '02', '03', ... 등으로 입력
)
============================================================
SELECT MAN, MAX(NAL) NAL FROM (
SELECT A.MAN, MIN(B.NAL) - A.NAL -1 NAL FROM A A, A B
WHERE B.MAN = A.MAN AND A.NAL < B.NAL
GROUP BY A.MAN, A.NAL)
GROUP BY MAN
============================================================
결과 =>
MAN NAL
------ ----------
a 4
b 11
c 10
3 rows selected.
-----------------------------------------------------------
초보 wrote:
> 데이타베이스 : Interbase
>
> 만들고자 하는 SQL 문 내용
>
> 회원 테이블
> 각 회원별로 1 개월간 나온 날자를 가지고 있는 테이블
>
> 각 회원별로 1개월동안 나온 날자를 비교하여 가장 많이 빠진 날자를 구할 수 있나요 ?
>
> 예를 들면
>
> 홍길동이란 회원인 3월 1,2,3,4,5,8,9,10,15,16...
> 이런식으로 나왔다면
> 검색할 때 처음레코드와 다음레코드의 날자를 비교하고 또 그다음날자를 비교
> (즉 홍길동이란 회원이 1달간 나온 자료를 가지고 바로 앞의 레코드와 현재레코드를
> 비교) 하여 가장 차이가 많이 나는 기간이 얼마인지를 알 수 있는 방법
> 1과 2일의 차이는 0
> 2와 3일의 차이는 0
> 3과 4일의 차이는 0
> 4와 5일의 차이는 0
> 5와 8일의 차이는 2
> 8과 9일의 차이는 0
> 9와 10일의 차이는 0
> 10과 15일의 차이는 4
>
> 결과는 4
>
>
> 위와 같은 SQL문을 아래와 같은 형식으로 만드는 SQL문이 작성이 가능한가요 ?
>
> 회원명 기간
> 홍길동 4
> 김말동 3
> 다나가 8
> 장길산 7
> .
> .
> .
>
> SQL문 고수님의 답변 학수고대하겠습니다.