Dev. Database/Oracle
집계와 조건 분기 - 1. 집계 대상으로 조건 분기
devock
2017. 3. 24. 17:49
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;
외관도 간단해지고 성능도 향상된다. 실행계획도 굉장히 간단해 지기 때문이다.