Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

으나님의 잡다한 개발상식

(SQL) 그룹함수(ROLLUP, GROUPING, GROUPING SETS, CUBE) 본문

SQL

(SQL) 그룹함수(ROLLUP, GROUPING, GROUPING SETS, CUBE)

스위트치즈 2020. 5. 27. 18:56

1) ROLLUP

- GROUP BY 컬럼에 대하여 SUBTOTAL을 만드는 함수

- ROLLUP을 할 때 GROUP BY 구에 컬럼이 두 개 이상 오면 순서에 따라서 결과가 달라짐

- GROUPING COLUMN 수를 N이라고 했을 때 N+1 LEVEL의 SUBTOTAL이 생성됨

 

 

2) GROUPING

- ROLLUP, CUBE, GROUPING SETS에서 생성되는 합계값을 구분하기 위해 만들어진 함수

- 소계, 합계 등이 계산되면 GROUPING 함수는 1을 반환하고, 그렇지 않으면 0을 반환해서 합계 값을 식별할 수 있음

 

 

 

3) GROUPING SETS

- GROUPING SETS 함수는 GROUP BY에 나오는 컬럼의 순서와 관계없이 다양한 소계를 만들 수 있으며, 개별적으로 모두 처리함

- UNION ALL을 사용한 일반 그룹함수를 사용한 SQL과 같은 결과를 얻을 수 있음

SELECT DNAME, JOB, MGR, SUM(SAL) TOTAL_SAL
FROM EMP, DEPT
WHERE DEPT.DEPTNO = EMP.DEPTNO
GROUP BY GROUPING SETS((DNAME,JOB,MGR), (DNAME,JOB), (JOB,MGR))/*UNION ALL한 것과 같음*/;

 

4) CUBE

- CUBE 함수에 제시한 컬럼에 대해서 결합 가능한 모든 집계를 계산

- 다차원 집계를 제공하여 다양하게 데이터 분석이 가능

- 시스템에 많은 부하를 일으킴

1열은 전체합계, 2~12열은 직업별 합계, 13, 17, 21, 27열은 부서별 합계, 나머지는 부서별/직업별 합계이다.

'SQL' 카테고리의 다른 글

(SQL) WINDOW 함수 - RANK(순위함수)  (0) 2020.05.28
(SQL) WINDOW함수  (0) 2020.05.28
(SQL) 서브쿼리 종류  (2) 2020.05.27
(SQL) 다중 행 SUBQUERY 비교 연산자  (0) 2020.05.27
(SQL) 계층형 조회  (0) 2020.05.27