👉 두 개 이상의 인수를 전달했을 때 두 개 컬럼의 집계,
❗ D9 / NULL 값은 첫번째 컬럼의 소계를 의미한다. (17700000)
❗ 마지막 줄에 둘 다 NULL 값은 총계를 의미한다. (73846240)
❗ SUM, AVG 등 함수가 꼭 있어야 한다.
SELECT DEPT_CODE, JOB_CODE, SUM (SALARY)
FROM EMPLOYEE
WHERE DEPT_CODE IS NOT NULL
GROUP BY ROLLUP (DEPT_CODE, JOB_CODE);
👉 두 개 이상의 인수를 전달했을 때 두 개 컬럼의 집계,
첫번째 인수 컬럼의 소계, 두번째 인수 컬럼의 소계, 전체 총계
❗ ROLLUP은 첫번째 인수 컬럼의 소계만 조회하지만,
CUBE는 두번째 컬럼의 소계를 모두 조회한다.
SELECT DEPT_CODE, JOB_CODE, SUM (SALARY)
FROM EMPLOYEE
WHERE DEPT_CODE IS NOT NULL
GROUP BY CUBE (DEPT_CODE, JOB_CODE);
✏️ 부서별, 직책별, 총 사원을 한 번에 조회하기
SELECT DEPT_CODE, JOB_CODE, COUNT (*)
FROM EMPLOYEE
WHERE DEPT_CODE IS NOT NULL
GROUP BY CUBE (DEPT_CODE, JOB_CODE);
👉 여러 GROUP BY 절이 있는 구문을 하나로 작성하게 해주는 기능
👉 첫번째 인수 컬럼의 소계, 두번째 인수 컬럼의 소계
👉 ROLLUP과 CUBE와 달리 계층 구조가 나타나지 않는다. 따라서 인자의 순서가 달라도 결과는 똑같다.
SELECT DEPT_CODE, JOB_CODE, MANAGER_ID, AVG (SALARY)
FROM EMPLOYEE
GROUP BY GROUPING SETS
((DEPT_CODE, JOB_CODE, MANAGER_ID), (DEPT_CODE, JOB_CODE), (DEPT_CODE, MANAGER_ID));
👉 GROUPING 함수는 직접 그룹별 집계를 구하지는 않지만 앞서 말한
ROLLUP, CUBE, GROUPING SETS 을 지원하는 역할을 한다.
👉 GROUPING 함수를 실행하면 ROLLUP, CUBE로 집계된 ROW 1을 반환 아니면 0을 반환한다.