ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ORACLE] OUTER JOIN 예제
    DATABASE 2019. 6. 13. 16:38

    * 분야별로 지원자 수가 없는 과목들 추출하기*

     

    A : 전 과목 테이블 (기준)

    B : 지원한 과목 테이블

    (lec_cd : 과목코드)

     

    1. 전 과목 테이블에서 분야별로 과목 추출하기

     

    SELECT

      grade,

      col_cd,

      lec_cd

    FROM A

    group by grade, col_cd, lec_cd

     

    2. 분야별로 추출한 과목테이블(AA)과 지원한 과목 테이블(B) OUTER JOIN 

    -> 지원한 과목 테이블(BB)에서 지원한 과목이 없는 데이터까지 추출

     

    SELECT

      aa.grade,

      aa.col_cd,

      aa.lec_cd

    (SELECT

      grade,

      col_cd,

      lec_cd

    FROM A

    group by grade, col_cd, lec_cd ) aa, B bb

    where aa.grade = bb.grade (+)

    and aa.col_cd = bb.col_cd (+)

    and aa.lec_cd = bb.lec_cd (+)

    group by aa.grade, aa.col_cd, aa.lec_cd

    order by aa.grade, aa.col_cd, aa.lec_cd

     

    3. 지원한 과목이 없는 데이터

     

    HAVING  /*group by의 조건절*/

    SUM( CASE WHEN lec_cd is not null then 1 else 0 end ) 

    -> lec_cd가 null 이면 0 null이 아니면 1

     

     

    [ SELECT

       aa.grade,

       aa.col_cd,

       aa.lec_cd

    (SELECT

      grade,

      col_cd,

      lec_cd

    FROM A

    group by grade, col_cd, lec_cd ) aa, B bb

    where aa.grade = bb.grade (+)

    and aa.col_cd = bb.col_cd (+)

    and aa.lec_cd = bb.lec_cd (+)

    group by aa.grade, aa.col_cd, aa.lec_cd

    having sum(case when lec_cd is not null then 1 else 0 end) < 1  /*lec_cd가 없는 데이터만 추출하기 위해*/

    order by aa.grade, aa.col_cd, aa.lec_cd ]

     

     

    'DATABASE' 카테고리의 다른 글

    [ORACLE] UPDATE문+SELECT문  (0) 2019.09.11
    [ORACLE] LEFT OUTER JOIN 개념  (0) 2019.09.11
    [ORACLE] 이중 CASE문 예제  (0) 2019.02.14
    [ORACLE] 계층형 쿼리  (0) 2019.01.10
    [ORACLE] 특정문자의 개수 알아보기  (0) 2018.12.18

    댓글

Designed by Tistory.