select dept_cd, sum(sale_qty) total,
sum(decode(substr(yymm, 7, 2), '01', sale_qty)) s_01,
sum(decode(substr(yymm, 7, 2), '02', sale_qty)) s_02
from sale
where yymm = '0202'
and saup = '0202'
group by dept_cd;
============================================
==> 이런식으로 바꾸는 것이 속도에 유리하다..
============================================
select dept_cd, sum(s_qty) total,
sum(decode(dd, '01', s_qty)) s_01,
sum(decode(dd, '02', s_qty)) s_02
from
(
select dept_cd, substr(yymm, 7, 2) dd, sum(sale_qty) s_qty
from sale
where yymm = '2002'
and saup = '0202'
group by dept_cd, substr(yymm, 7, 2)
)
group by dept_cd
substr이 group by 내에서 수행함으로써 10,000회로 감소하였다. 또한 수행결과의 집합이
물리적으로 저장되었으므로 외부에 있는 select에서는 substr을 사용하지 않고 상수값 'dd'를
이용해 비교할 수 있게 되었다.
'SQL > ORACLE' 카테고리의 다른 글
[Oracle]실행결과 보는 방법 (0) | 2014.02.12 |
---|---|
[Oracle]테이블에서 칼럼 삭제 (0) | 2014.02.12 |
[Oracle] Create Index 인덱스 생성 방법 (0) | 2014.02.12 |
[Oracle]기본키(Primary key) 2개의 칼럼 (0) | 2014.02.12 |
[Oracle]함수(Function)을 이용한 리스트 가져오기 chr 사용 (0) | 2014.02.12 |
[Oracle]시퀀스(Sequence)값 입력하기 (0) | 2014.02.12 |
[Oracle]sql문 실행시 실행계획을 보는방법 (0) | 2014.02.12 |
[Oracle]실행계획을 보는 방법 (0) | 2014.02.12 |