부등호 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 | 56559 |
125 | REPORT 양식 맞추기 | 운영자 | 2002.09.18 | 31280 |
124 | PARAMETER값에 따라 변경이 일어나는 문장 | 운영자 | 2002.09.17 | 15661 |
123 | oracle proc 에서 stdarg.h파일사용하기위한 환경설정 | 원우석 | 2004.12.06 | 12508 |
122 | 테이블 열항목을 행항목으로 변경하는 팁 | 구퍼 | 2011.01.11 | 8675 |
121 | NESTED TABLE과 VARRAY사용법과 다른점 | 박상현 | 2005.11.03 | 8642 |
120 | 바로이전 ROW의 값을 참조하고자 할때 | 운영자 | 2002.09.18 | 8493 |
119 | oracle의 procedure에서의 여러 리턴값의 활용 예 | 운영자 | 2002.10.18 | 8151 |
118 | 오라클 DB 링크 만들기 | 구퍼 | 2011.01.06 | 6510 |
117 | toad에서 사용가능한 explan_table생성 script | 박상현 | 2004.05.08 | 6382 |
116 | mssql update예제(select ~ update) | 구퍼 | 2008.10.31 | 6115 |
115 | java에서 array처리 방법 | 운영자 | 2003.01.27 | 6033 |
114 | Instant Client 사용법 | 구퍼 | 2009.12.30 | 5894 |
113 | COLUMN을 ROW로 | 운영자 | 2002.09.18 | 5858 |
112 | select -> update 구문 샘플 | 구퍼 | 2010.01.21 | 5696 |
111 | 그룹 단위별 일련번호 붙이기 | 운영자 | 2002.09.18 | 5668 |
110 | 데이타에 한글로 공백이 있는 경우 값을 가져오지 못하고 오류가 발생하는 경우 처리 | 구퍼 | 2009.03.23 | 5584 |
109 | 현재의 년월일시분초 구하기 | 구퍼 | 2008.09.10 | 5549 |
108 | Conditions | 구퍼 | 2008.09.17 | 5544 |
107 | 순환구조에서 임시테이블에 하위 조직을 엮어서 넣는 프로시져 | 하늘과컴 | 2007.10.01 | 5204 |