쿼리를 작성하는데 디비를 처음 접하는 나에겐 참 .. 큰 난관이였다.
SELECT deptno
,sum(decode(job,'CLERK', sal)) cleark_sum
,sum(decode(job,'SALESMAN', sal)) salesman_sum
,sum(decode(job,'CLERK',null,'SALESMAN',null, sal)) etc_sum
,sum(sal)
FROM emp
GROUP BY deptno
총 5개의 컬럼을 select 하려고 한다. deptno(10,20,30)으로 GROUP BY를 진행한다.
그렇다면 내부동작은 어떻게 될까?
deptno(10) : → sum(10 and cleark) or sum (10 and salesman) or (10 and etc) or sum(10 and sal)을한다.
10을 보자. CLEARK_SUM : 10을 가진 DEPTNO AND 그 중에서 CLEARK에서 두 개 다 만족하는 경우 SUM를 진행한다. 그 총합이 1300이다.
SALEMAN도 동일하다 : (10 AND SALEMAN)에서 둘 다 만족하는 SUM값을 더해서 표시한다.