*펼칠 컬럼이 너무 많을때는 먼저 GROUP BY 한 후 처리하라.
select dept_no,
sum(decode(substr(wk_kt,7,2), '01', amt)) d1,
sum(decode(substr(wk_kt,7,2), '02', amt)) d2,
sum(decode(substr(wk_kt,7,2), '03', amt)) d3,
sum(decode(substr(wk_kt,7,2), '04', amt)) d2,
,,,
sum(decode(substr(wk_kt,7,2), '31', amt)) d31
→select dept_no, sum(decode(dd,'01', amt)) d1, sum(decode(dd,'02', amt)) d2, sum(decode(dd,'03', amt)) d3, sum(decode(dd,'04', amt)) d4, ,,, ▶①, ②, ④, ⑤는 동일하다. sum(decode(dd,'31', amt)) d31 ▶③의 결과는 count(8) 과 동일하다. from(select dept_no, substr(wk_dt,7,2), dd, sum(amt) amt from tab1 ▶①은 ②보다 불리다하(불필요한 0 연산) where wk_dt like '200401%' ) ▶②는 ④, ⑤보다 불리 group by dept_no ▶④, ⑤는 동일하다. *COUNT, SUM의 비교 ①sum(decode(col1,'A',1,0)) ②sum(decode(col1,'A',1)) □SUM은 COUNT에 비해 30~50% 불리함 ③count(decode(col1,'A',1,0)) ④count(decode(col1,'A',1)) □COUNT는 not null인 경우에만 처리 ⑤count(decode(col1,'A','C')) □COUNT를 사용할 수 있다면 SUM을 사용하지 마라.
'오라클 > Oracle,SQL' 카테고리의 다른 글
오라클공부 288. 그룹 함수의 개념 (0) | 2015.10.15 |
---|---|
오라클공부 287. DECODE 사용시 주의사항 (0) | 2015.10.15 |
오라클공부 285. DECODE 사용시 주의사항 (0) | 2015.10.14 |
오라클공부 284. DECODE 사용시 주의사항 (0) | 2015.10.14 |
오라클공부 283. 일반 함수 CASE 함수 예 (0) | 2015.10.14 |