더북(TheBook)
② WITH절을 이용한 방법

WITH절을 이용하는 방법은 DECODE나 CASE문을 이용 방법과 유사한데, 서브 쿼리 대신 WITH을 사용한다.

입력

    WITH mains AS ( SELECT years, gubun,                    
                           CASE WHEN subjects = '국어'   THEN score ELSE 0 END "국어",
                           CASE WHEN subjects = '영어'   THEN score ELSE 0 END "영어",
                           CASE WHEN subjects = '수학'   THEN score ELSE 0 END "수학",
                           CASE WHEN subjects = '과학'   THEN score ELSE 0 END "과학",
                           CASE WHEN subjects = '지리'   THEN score ELSE 0 END "지리",
                           CASE WHEN subjects = '독일어' THEN score ELSE 0 END "독일어"
                      FROM ch14_score_table a
                   )
    SELECT years, gubun,
           SUM(국어) AS 국어, SUM(영어) AS 영어, SUM(수학) AS 수학,
           SUM(과학) AS 과학, SUM(지리) AS 지리, SUM(독일어) AS 독일어
     FROM mains
    GROUP BY years, gubun;

결과

    YEARS GUBUN   국어      영어    수학   과학    지리    독일어
    ----- ------- -------- ------- ------ ------- ------- -------
    2014  기말고사   88      80      93      91      89      83
    2014  중간고사   92      87      67      80      93      82

역시 동일한 결과가 나왔다. 코드를 보면 서브 쿼리를 WITH 절로 올린 것만 제외하면 나머지 내용은 같다. WITH 절로 묶으면 서브 쿼리를 사용하는 것보다 가독성이 좀더 좋다고 할 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.