부등호 JOIN
조건.
TEST13 에 다음과 같은 DATA가 있다.
LEVEL : 등급
FPOINT : 하한금액
TPOINT : 상한금액
GIFT : 구간해당상품
LEV FPOINT TPOINT GIFT
--- ---------- ---------- --------------------
01 0 10000 엽서
02 10001 50000 볼펜
03 50001 100000 공중전화카드
04 100001 200000 머그컵
05 200001 300000 손전등
06 300001 500000 찾잔세트
07 500001 700000 휴대용가스버너
08 700001 1000000 도서상품권
09 1000001 1500000 녹차세트
10 1500001 2000000 소형청소기
11 2000001 3000000 옷걸이
12 3000001 5000000 구두상품권
13 5000001 7000000 콘도이용권
14 7000001 10000000 PCS무료가입권
15 10000001 20000000 갈비세트
16 20000001 30000000 굴비세트
17 30000001 50000000 의류교환권
18 50000001 70000000 TV
19 70000001 100000000 AUDIO
20 100000001 200000000 COMPUTER
20 행이 선택되었습니다
TEST14 에는 다음과 같은 DATA가 있다.
CUST : 고객
POINT : 실제 점수
CUST POINT
--------------- ----------
721101-2144952 809910
721109-2144952 1439688
710125-1144951 3608860
701212-1143211 8996280
650207-1765152 20239650
672102-2123452 40935040
500823-1132762 75636408
771201-2233445 129855120
680801-1234455 10059470
620908-2121232 123674200
문제.
고객별 누적 구매금액에 따라 상품을 지급하기위해 구매범위를
20단계로 분류했다.
첫번째 각 고객별로 해당되는 상품의 LIST
두번째 각 상품별로 준비되어야할 갯수를 구하고 싶다.
결과는 다음과 같이 나오면 된다.
CUST GIFT
--------------- --------------------
721101-2144952 도서상품권
721109-2144952 녹차세트
710125-1144951 구두상품권
701212-1143211 PCS무료가입권
680801-1234455 갈비세트
650207-1765152 굴비세트
672102-2123452 의류교환권
500823-1132762 AUDIO
771201-2233445 COMPUTER
620908-2121232 COMPUTER
GIFT 상품수
-------------------- ----------
AUDIO 1
COMPUTER 2
PCS무료가입권 1
갈비세트 1
구두상품권 1
굴비세트 1
녹차세트 1
도서상품권 1
의류교환권 1
생각.
특별히 생각할 것도 없다.
머리속에서 시키는대로 고객의 누적금액이
정해진 구간의 하한보다 크거나같고 상한보다 작거나 같으면된다.
그렇게 조인을 걸어주면된다.
부등호 조인이 가능하다는 사실만 알면 어려움이 없는 문제다.
해법.
첫번째 고객별로 해당상품의 LIST는 다음과 같다.
SELECT A.CUST,
B.GIFT
FROM TEST14 A ,
TEST13 B
WHERE A.POINT > 0
AND A.POINT BETWEEN B.FPOINT AND B.TPOINT
두번째 각 상품별로 준비되어야 할 갯수는 다음과 같다.
SELECT B.GIFT,
COUNT(A.CUST) 상품수
FROM TEST14 A ,
TEST13 B
WHERE A.POINT BETWEEN B.FPOINT AND B.TPOINT
GROUP BY
B.GIFT
문제의 핵심은 조건절이다.
부등호 조인의 확실한 이해를 돕기위한 문제다.
조건.
TEST13 에 다음과 같은 DATA가 있다.
LEVEL : 등급
FPOINT : 하한금액
TPOINT : 상한금액
GIFT : 구간해당상품
LEV FPOINT TPOINT GIFT
--- ---------- ---------- --------------------
01 0 10000 엽서
02 10001 50000 볼펜
03 50001 100000 공중전화카드
04 100001 200000 머그컵
05 200001 300000 손전등
06 300001 500000 찾잔세트
07 500001 700000 휴대용가스버너
08 700001 1000000 도서상품권
09 1000001 1500000 녹차세트
10 1500001 2000000 소형청소기
11 2000001 3000000 옷걸이
12 3000001 5000000 구두상품권
13 5000001 7000000 콘도이용권
14 7000001 10000000 PCS무료가입권
15 10000001 20000000 갈비세트
16 20000001 30000000 굴비세트
17 30000001 50000000 의류교환권
18 50000001 70000000 TV
19 70000001 100000000 AUDIO
20 100000001 200000000 COMPUTER
20 행이 선택되었습니다
TEST14 에는 다음과 같은 DATA가 있다.
CUST : 고객
POINT : 실제 점수
CUST POINT
--------------- ----------
721101-2144952 809910
721109-2144952 1439688
710125-1144951 3608860
701212-1143211 8996280
650207-1765152 20239650
672102-2123452 40935040
500823-1132762 75636408
771201-2233445 129855120
680801-1234455 10059470
620908-2121232 123674200
문제.
고객별 누적 구매금액에 따라 상품을 지급하기위해 구매범위를
20단계로 분류했다.
첫번째 각 고객별로 해당되는 상품의 LIST
두번째 각 상품별로 준비되어야할 갯수를 구하고 싶다.
결과는 다음과 같이 나오면 된다.
CUST GIFT
--------------- --------------------
721101-2144952 도서상품권
721109-2144952 녹차세트
710125-1144951 구두상품권
701212-1143211 PCS무료가입권
680801-1234455 갈비세트
650207-1765152 굴비세트
672102-2123452 의류교환권
500823-1132762 AUDIO
771201-2233445 COMPUTER
620908-2121232 COMPUTER
GIFT 상품수
-------------------- ----------
AUDIO 1
COMPUTER 2
PCS무료가입권 1
갈비세트 1
구두상품권 1
굴비세트 1
녹차세트 1
도서상품권 1
의류교환권 1
생각.
특별히 생각할 것도 없다.
머리속에서 시키는대로 고객의 누적금액이
정해진 구간의 하한보다 크거나같고 상한보다 작거나 같으면된다.
그렇게 조인을 걸어주면된다.
부등호 조인이 가능하다는 사실만 알면 어려움이 없는 문제다.
해법.
첫번째 고객별로 해당상품의 LIST는 다음과 같다.
SELECT A.CUST,
B.GIFT
FROM TEST14 A ,
TEST13 B
WHERE A.POINT > 0
AND A.POINT BETWEEN B.FPOINT AND B.TPOINT
두번째 각 상품별로 준비되어야 할 갯수는 다음과 같다.
SELECT B.GIFT,
COUNT(A.CUST) 상품수
FROM TEST14 A ,
TEST13 B
WHERE A.POINT BETWEEN B.FPOINT AND B.TPOINT
GROUP BY
B.GIFT
문제의 핵심은 조건절이다.
부등호 조인의 확실한 이해를 돕기위한 문제다.
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
» | 부등호 조인 | 운영자 | 2002.09.18 | 56705 |
65 | 행렬(matrix)계산을위한 준비 | 운영자 | 2002.09.18 | 3061 |
64 | 최대값과 해당해의 다른값 가져오기 | 운영자 | 2002.09.18 | 3221 |
63 | DATA 병합 | 운영자 | 2002.09.18 | 2578 |
62 | 다수 NULL 허용 COLUMN의 명칭을 가져올때 | 운영자 | 2002.09.18 | 3732 |
61 | 수식이용 | 운영자 | 2002.09.18 | 2738 |
60 | JOIN과 SUBQUERY가 동일한 예제 | 운영자 | 2002.09.18 | 2950 |
59 | NULL과 0 의 AVG 차이 비교 | 운영자 | 2002.09.18 | 2875 |
58 | 고정된 Row 수 유지 | 운영자 | 2002.09.18 | 4228 |
57 | 두개 RECORD를 한행에 DISPLAY 시키기 | 운영자 | 2002.09.18 | 3162 |
56 | LENGTH/LENGTHB,SUBSTR/SUBSTRB,INSTR/INSTRB | 운영자 | 2002.09.18 | 4292 |
55 | 한줄에 2 ROW 보여주기 변형II | 운영자 | 2002.09.18 | 3109 |
54 | 상호간 OUTER 조인의 해결방안 | 운영자 | 2002.09.18 | 2941 |
53 | 선택적조인 | 운영자 | 2002.09.18 | 2961 |
52 | 반올림 DATA의 오차보정 | 운영자 | 2002.09.18 | 3585 |
51 | 복제를이용한 합계계에서 비율계산 | 운영자 | 2002.09.18 | 3669 |
50 | DATA변환 | 운영자 | 2002.09.18 | 2750 |
49 | 중간값구하기 | 운영자 | 2002.09.18 | 3377 |
48 | 한번 읽은 테이블로 백분율 구하기 | 운영자 | 2002.09.18 | 4085 |
47 | 빠진이빨찾기 III | 운영자 | 2002.09.18 | 3359 |