2-2장 SQL 활용 - 5절 그룹함수

Study/SQLD

2-2장 SQL 활용 - 5절 그룹함수

tnddj1219 2022. 7. 1. 02:40
728x90

1. GROUP FUNCTION(그룹함수)개요

결산 개념의 업무를 가지는 원가/판매 시스템의 경우에 해당.
그룹 함수를 사용하면 하나의 SQL 로 테이블을 한 번만 읽어서 빠르게 원하는 리포트 작성 가능.
소계/합계 표시를 위해 GROUPING 함수와 CASE 함수를 이용. 쉽게 원하는 포맷의 보고서 작성 가능.
ROLLUP, CUBE, GROUPING SETS
함수 포함

 

2. 그룹 함수 종류

ROLLUP 함수
GROUP BY로 묶인 칼럼의 소계 계산을 위해 사용
GROUPING Columns
의 수를 N이라 하면, N+1 Level Subtotal 이 생성
계층 구조로 GROUP BY의 칼럼 순서가 바뀌면 결과 값 바뀜

 

CUBE 함수
결합 가능한 모든 값에 대하여 다차원 집계를 생성
내부적으로 Grouping Columns의 순서를 바꾸어서 또 한 번의 Query 를 추가 수행해야 한다.
Grand Total
은 양쪽의 쿼리에서 모두 생성되므로, 한 번의 쿼리에서는 제거되어야만 하므로 ROLLUP 에 비해 시스템의 연산 대상이 많다.
CUBE
함수의 경우 표시된 인수들에 대한 계층별 집계를 구할 수 있고, 이 때 표시된 인수들 간에는 ROLLUP 과 달리 평등한 관계이므로, 인수의 순서가 바뀌는 경우, 정렬 순서는 바뀌더라도 데이터 결과는 같다.
GROUPING Columns
의 수를 N 이라 하면, 2 N Level Subtotal 이 생성된다.

 

GROUPING SETS 함수
GROUPING SETS
를 이용하여 다양한 소계 집합을 만듬
GROUPING SETS
에 표시된 인수들에 대한 개별 집계를 구할 수 있고, 표시된 인수들 간에는 ROLLUP 과 달리 평등한 관계이므로 인수의 순서가 바뀌어도 결과는 같다. (CUBE 함수와 같음)

 

그룹함수 결과 비교

표현식 출력값
GROUP BY ROLLUP (E1,E2) E1E2별 소계 / E1별 소계 / 총합계
GROUP BY CUBE (E1,E2) E1 E2별 소계 / E1별 소계 / E2별 소계 / 총합계
GROUP BY GROUPING SETS (E1,E2) E1별 소계 / E2별 소계

‘GROUP BY CUBE (E1,E2)’ ‘GROUP BY GROUPING SETS (E1,E2,(E1,E2),())’는 동일한 결과 출력

 

GROUPING
그룹 함수에서 생성되는 합계를 구분해주는 함수, 소계나 합계가 계산되면 1 아니면 0 반환

728x90