-
[SQLD 요약] II. SQL 기본 및 활용 - 02. SQL 활용 (3) - Group Function (그룹함수)자격증/SQLD (SQL 개발자) 2021. 5. 8. 11:21728x90반응형
SQLD 요약 / SQL Developer 요약
🔑 그룹함수/ Group Function/ GROUP BY/ ROLLUP/ GROUPING SETS/ CUBE/ GROUPING
II. SQL 기본 및 활용
02. SQL 활용
[1] 조인 (JOIN)
[2] 계층형 조회 (Connect by)
[3] 서브쿼리 (Subquery)
[4] 그룹함수 (Group Function)
02. SQL 활용
[4] 그룹함수 (Group Function)
ROLLUP GROUPING GROUPING SETS CUBE - GROUP BY절과 함께 사용
- 집합의 소계/총계 계산
- 칼럼 순서에 따라 결과 다름- 소계/총계 계산 식별
- 합계 계산되면 1
- 합계가 아니면 0- GROUP BY절과 함께 사용
- 칼럼 순서와 관계없음
- 칼럼 순서 달라도 결과 같음- GROUP BY절과 함께 사용
- 다차원 집계
- 가능한 모든 결합 계산(1) ROLLUP | GROUP BY의 칼럼에 대해 Subtotal 생성
- GROUP BY절과 함께 사용 → 그룹화된 집합에 대해 더 상세한 정보를 생성
- 기존에 SELECT된 데이터의 소계, 총계를 구할 수 있음
- 예시 (1) : DEPTNO에 대해 GROUP BY로 합계 계산, 그리고 전체합계를 추가 계산
- 기존 GROUP BY와 다르게, ROLLUP으로 전체합계까지 계산할 수 있음
# ROLLUP으로 부서별합계, 전체합계 계산 및 조회 # DECODE문은 전체합계를 조회할 때 문자를 출력하기 위해 사용함! # DECODE: DEPTNO = NULL이면 '전체합계', 아니면 부서번호를 출력 SELECT DECODE(DEPTNO, NULL, '전체합계', DEPTNO), SUM(SAL) FROM EMP GROUP BY ROLLUP(DEPTNO);
- GROUP BY구에 칼럼이 2개 이상 → 순서에 따라 결과 달라짐!
- 예시 (2) : 부서별, 직업별, 전체 합계 계산
- ROLLUP으로 실행되는 칼럼별로, Subtotal을 생성함
# GROUP BY구에 칼럼 2개 이상 SELECT DEPTNO, JOB, SUM(SAL) FROM EMP GROUP BY ROLLUP(DEPTNO, JOB);
- 예시 (3): 부서별로 인원수 & 급여합계 계산 및 조회
SELECT B,DNAME, A.JOB, SUM(A.SAL) SAL, COUNT(A.EMPNO) EMP_COUNT # 인원 카운트 FROM EMP A, DEPT B WHERE A.DEPTNO = B.DEPTNO GROUP BY ROLLUP(B.DNAME, A.JOB); # 부서별로 급여합계SUM, 전체인원COUNT 조회
(2) GROUPING 함수 | 생성된 합계값을 원래 데이터와 구분
- ROLLUP, GROUPING SETS, CUBE로 생성하는 합계값을 구분하기 위한 함수
- 1,0 을 반환하여 개발자가 합계값을 식별할 수 있게 해줌
- 소계/합계 등이 계산되면 → 1
- 소계/합계 등이 아니면 → 0
# GROUPING 함수 예시 # DECODE 함수로 '부서합계' 혹은 '전체합계'를 출력 SELECT DEPTNO, DECODE(GROUPING(DEPTNO), 1, '전체합계') TOT, JOB, DECODE(GROUPING(JOB), 1, '부서합계') T_DEPT, SUM(SAL) FROM EMP GROUP BY ROLLUP(DEPTNO);
(3) GROUPING SETS 함수 | 칼럼 순서와 관계없이, 다양한 소계(Subtotal) 생성
- GROUP BY구의 칼럼 순서와 관계없이 모든 소계를 개별적으로 처리함
- 칼럼간 서로 관계가 없으므로, 순서가 바뀌어도 결과는 같음
# 칼럼 순서와 관계없이 직업별, 부서별 합계 계산 및 조회 SELECT DEPTNO, JOB, SUM(SAL) FROM EMP GROUP BY GROUPING SETS(DEPTNO, JOB); # DEPTNO, JOB을 각각의 그룹으로 합계 계산
(4) CUBE 함수 | 다차원 집계/ 가능한 모든 집계 계산
- 다차원 집계: 제시한 칼럼에 대해서, 조합할 수 있는 모든 경우의 수 / 결합 가능한 모든 집계를 계산함
- 예시 (1): 전체합계, 직업별합계, 부서별합계, 부서별-직업별합계 모두 계산 및 조회
# CUBE 함수 예시 SELECT DEPTNO, JOB, SUM(SAL) FROM EMP GROUP BY CUBE(DEPTNO, JOB);
- CUBE함수는 ROLLUP에 의해 나타나는 Item Total, Column Total 값을 계산함
- 예시 (2): 부서별-직업별 급여합계 및 전체인원, 직업별로 급여합계 및 전체인원 조회
SELECT B.DNAME, A.JOB, SUM(A.SAL) SAL, # 급여합계 COUNT(A.EMPNO) EMP_COUNT # 전체인원 FROM EMP A, DEPT B WHERE A.DEPTNO = B.DEPTNO GROUP BY CUBE(B.DNAME, A.JOB);
참고도서: SQL 개발자 이론서+기출문제_이기적, 2020
참고링크 1: www.gurubee.net/lecture/1845
참고링크 2: www.gurubee.net/lecture/1846
728x90반응형'자격증 > SQLD (SQL 개발자)' 카테고리의 다른 글
[SQLD 요약] II. SQL 기본 및 활용 - 03. SQL 최적화의 원리 (1) - 옵티마이저 & 인덱스 (0) 2021.05.12 [SQLD 요약] II. SQL 기본 및 활용 - 02. SQL 활용 (4) - 윈도우함수, 테이블파티션 (0) 2021.05.09 [SQLD 요약] II. SQL 기본 및 활용 - 02. SQL 활용 (2) - Connect by, Subquery (서브쿼리) (0) 2021.05.08 [SQLD 요약] II. SQL 기본 및 활용 - 02. SQL 활용 (1) - JOIN, UNION, MINUS (0) 2021.05.06 [SQLD 요약] II. SQL 기본 및 활용 - 01. SQL 기본 (6) - DCL & TCL (1) 2021.05.05