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) | E1과 E2별 소계 / 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 반환
'Study > SQLD' 카테고리의 다른 글
2-2장 SQL 활용 - 7절 DCL(Data Control Language) (2) | 2022.07.03 |
---|---|
2-2장 SQL 활용 - 6절 윈도우 함수 (0) | 2022.07.02 |
2-2장 SQL 활용 - 4절 서브쿼리 (0) | 2022.06.30 |
2-2장 SQL 활용 - 3절 계층형 질의와 셀프 조인 (0) | 2022.06.30 |
2-2장 SQL 활용 - 2절 집합연산자 (0) | 2022.06.29 |