[mssql] rollup 관련해서 공부중입니다. 0 1 2,754

by 준일정 mssql mysql oracle sql query [2018.05.28 23:28:17]


rollup.PNG (47,244Bytes)

SELECT

       b.dname 
       ,a.job
       ,sum(a.sal) as 'sal' 
       ,count(a.EMPNO) as 'emp_count' 
FROM 
       emp a, dept b 
WHERE 
       a.deptno = b.deptno 
group by 
      rollup(b.dname, a.job) 

 

 

 

이렇게 쿼리를 작성하였고 결과값을 보여드리겠씁니다. 인사부쪽의 주황색갈 부분이 왜 이렇게 나온지 알 수 있을까요? 물론 인사부원 중 1명이 job이 null이니까 저렇게 나올 수 가 있겠는데 왜 가장 마지막 부분은 null null 6490 14 이렇게 되는 것일까요?

 

 

 

 

 

 

by 마농 [2018.05.29 08:05:41]

결과를 봤을 때 인사부에 job 이 null 인 직원은 없어 보입니다.
마지막 줄은 전체 합계입니다.
ROLLUP 의 작동 원리 : 단계별 소계
우측 항목을 하나씩 단계별로 없애나가면소 합계를 구함
 GROUP BY ROLLUP(dname, job)
 1. GROUP BY dname, job   -- 부서별, 직급별 소계
 2. GROUP BY dname, null  -- 부서별 소계
 3. GROUP BY null , null  -- 전체 합계

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입