HANCO
SQL / 그룹함수 1편 본문
1. ROLLUP 함수
1) ROLLUP 함수란
- ROLLUP함수는 ROLLUP(인수)에 지정된 Grouping Columns의 List Subtotal을 생성하기 위해 사용되어지고 Grouping Columns의 수를 N이라고 했을 때 N+1 Level의 Subtotal이 생성되어진다.
2) ROLLUP 함수 사용
- ROLLUP함수는 GROUP BY절에 사용되어 지고 GROUP BY ROLLUP("인수1", "인수2")의 형식을 가진다.
Table을 이용하여 rollup함수의 사용을 쉽게 보일 수 있다.
DNAME(부서이름) |
JOB(부서별 역할) |
Total Employers(총 직원 수) |
Total Sal(총 연봉) |
SALES |
CLERK |
1 |
100 |
SALES |
SALESMAN |
4 |
800 |
SALES |
MANAGER |
1 |
300 |
SALES |
- |
6 |
1200 |
ACCOUNTING |
CLERK |
1 |
120 |
ACCOUNTING |
PRESIDENT |
2 |
300 |
ACCOUNTING |
MANAGER |
2 |
600 |
ACCOUNTING |
- |
5 |
1020 |
- | - | 11 | 2220 |
SQL 문:
SELECT "~~~생략~~~" FROM DEPT D, EMP E WHERE D.DEPTNO = E.DEPTNO GROUP BY ROLLUP(DNAME, JOB);
테이블을 분석해보자
먼저 GROUP BY함수를 사용했기 때문에 그룹별로 칼럼이 출력되게 된다.
ROLLUP함수는 계층구조를 가지고 있는데 ROLLUP(DNAME, JOB)이므로 DNAME(부모) -> JOB(자식) 의 계층 구조를 가진다고 가정을 해보면 DNAME이 포함하고 있는 JOB의 값을 먼저 분석하고 최종적으로 DNAME의 값을 분석한다.
인수가 적힌 순서를 분석의 순서라고 생각하지말고 먼저 적혀 있는 인수가 그 다음인수를 포함하는 큰 개념이라고 생각하면 편하다.
TIP
ROLLUP함수에서 ROLLUP("인수1", "인수2")
여기 두 인수의 순서는 정말 중요하다.
만약 ROLLUP("인수2", "인수1") 이라면 그 결과는 바뀌게 된다.
이상 -멋쟁이사자처럼 박준영-