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;
외관도 간단해지고 성능도 향상된다. 실행계획도 굉장히 간단해 지기 때문이다.
'Dev. Database > Oracle' 카테고리의 다른 글
system 계정 비밀번호 분실과 계정 lock 해결법 (0) | 2017.10.29 |
---|---|
집계와 조건 분기 - 2. 집약결과로 조건 분기 (0) | 2017.03.24 |
문자 및 날짜 기본 함수 (0) | 2016.12.04 |
[ORACLE] 테이블의 Primary Key Column 조회 Query 문 (0) | 2016.12.01 |
ORA-28001: the password has expired 해결법 (0) | 2016.10.26 |