메뉴 건너뛰기

tnt_db

Oracle 부등호 조인

운영자 2002.09.18 14:20 조회 수 : 56559 추천:9

부등호 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

    문제의 핵심은 조건절이다.
    부등호 조인의 확실한 이해를 돕기위한 문제다.
번호 제목 글쓴이 날짜 조회 수
» 부등호 조인 운영자 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
위로