HANCO

SQL / 그룹함수 1편 본문

데이터베이스/SQL

SQL / 그룹함수 1편

HANCO 2018. 8. 15. 13:56

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 

100 

SALES  

SALESMAN

4

800

SALES  

MANAGER

300 

SALES  

1200 

ACCOUNTING 

CLERK 

120 

ACCOUNTING  

PRESIDENT 

300 

ACCOUNTING  

MANAGER 

600 

ACCOUNTING  

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") 이라면 그 결과는 바뀌게 된다.



이상 -멋쟁이사자처럼 박준영-