본문 바로가기

Dev. Database/Oracle

집계와 조건 분기 - 1. 집계 대상으로 조건 분기

1. 집계 대상으로 조건 분기

- UNION을 사용한 방법


SELECT PREFECTURE, SUM(POP_MEN) AS POP_MEN, SUM(POP_WOM) AS POP_WOM
 FROM(   SELECT PREFECTURE, POP AS POP_MEN, NULL AS POP_WOM
            FROM  POPULATION
            WHERE SEX = '1'
            UNION
            SELECT PREFECTURE, NULL AS POP_MEN, POP AS POP_WOM
            FROM  POPULATION
            WHERE SEX = '2') tmp
GROUP BY PREFECTURE;


-> 실행계획을 보면 POPULATION 테이블에 풀 스캔이 2회 수행되는 것을 확인할 수 있다.


- CASE식을 사용한 방법

SELECT PREFECTURE,
         SUM(CASE WHEN SEX = '1' THEN POP ELSE 0 END) AS POP_MEN,
         SUM(CASE WHEN SEX = '2' THEN POP ELSE 0 END) AS POP_WOM
   FROM POPULATION
GROUP BY PREFECTURE;


외관도 간단해지고 성능도 향상된다. 실행계획도 굉장히 간단해 지기 때문이다.