SQLD - 과목2. (14) 그룹 함수
1. 데이터 분석 개요
◈ AGGREGATE FUNCTION
◈ GROUP FUNCTION
◈ WINDOW FUNCTION
세 가지 함수 | 설명 |
AGGREGATE FUNCTION | GROUP FUNCTION 의 한 부분으로 분류. COUNT, SUM, AVG, MAX, MIN 외 각종 집계 함수들이 포함. |
GROUP FUNCTION | 결산 개념의 업무를 가지는 원가/판매 시스템의 경우. 그룹 함수를 사용하면 하나의 SQL 로 테이블을 한 번만 읽어서 빠르게 원하는 리포트 작성 가능. 소계/합계 표시를 위해 GROUPING 함수와 CASE 함수를 이용하면, 쉽게 원하는 포맷의 보고서 작성 가능. ROLLUP, CUBE, GROUPING SETS 함수 포함. |
WINDOW FUNCTION | 분석 함수나 순위 함수. |
2. ROLLUP 함수
ROLLUP 에 지정된 GROUPING Columns 의 List 는 Subtotal 을 생성하기 위해 사용되며,
GROUPING Columns 의 수를 N 이라 하면, N+1 Level 의 Subtotal 이 생성된다.
(주의)
ROLLUP 의 인수는 계층 구조 이므로, 인수 순서가 바뀌면 수행 결과도 바뀌므로 인수의 순서를 주의해야 한다.
ROLLUP 함수 사용으로 LEVEL 의 집계가 생성된다.
3. CUBE 함수
ROLLUP 함수에서는 단지 가능한 Subtotal 만 생성하였지만, CUBE 는 결합 가능한 모든 값에 대하여 다차원 집계를 생성한다.
CUBE 를 사용할 경우, 내부적으로 Grouping Columns 의 순서를 바꾸어서 또 한 번의 Query 를 추가 수행해야 한다.
Grand Total 은 양쪽의 쿼리에서 모두 생성되므로, 한 번의 쿼리에서는 제거되어야만 하므로 ROLLUP 에 비해 시스템의 연산 대상이 많다.
CUBE 함수의 경우 표시된 인수들에 대한 계층별 집계를 구할 수 있고, 이 때 표시된 인수들 간에는 ROLLUP 과 달리 평등한 관계이므로, 인수의 순서가 바뀌는 경우, 정렬 순서는 바뀌더라도 데이터 결과는 같다.
CUBE 함수는 가질 수 있는 모든 경우의 수에 대하여 생성하므로,
GROUPING Columns 의 수를 N 이라 하면, 2의 N승 Level 의 Subtotal 이 생성된다.
4. GROUPING SETS 함수
GROUPING SETS 를 이용하여 다양한 소계 집합을 만들 수 있다.
GROUPING SETS 에 표시된 인수들에 대한 개별 집계를 구할 수 있고, 표시된 인수들 간에는 ROLLUP 과 달리 평등한 관계이므로 인수의 순서가 바뀌어도 결과는 같다. ( CUBE 함수와 같음 )