✨ 그룹 함수란?
그룹 함수가 등장하기 전, Grouping을 위해서는 여러 단계의 SQL을 UNION, UNION ALL로 묶은 후에 하나의 테이블을 여러번 읽어나가면서 재정렬을 수행하는 방식을 사용했다. GROUP FUNCTION 을 사용하게 되면서 하나의 SQL로 시스템 내 한번만 작동하여 작성이 가능하도록 진화했다.
그룹 함수는 COUNT, SUM, AVG, MAX, MIN 등의 함수를 포함하고 있으며, ROLLUP, CUBE, GROUPING SETS 이 존재한다.
🪡 ROLLUP
ROLLUP은 소그룹 집계 함수로, 그룹이 지어진 소그룹에 대한 합계를 제공하는 함수이다.
사용할 경우, group by 함수를 사용한 묶음 단위의 집계를 구할 수 있으며 주의할 점이 있다면 group by에 명시한 모든 컬럼에 대한 합계를 계산하는 것이 아니라, 맨 처음 명시한 칼럼에 대해서만 구한다는 점이다.
이와 같은 형태로 사용이 가능하며, 첫번째 컬럼에 대해 구하기 때문에 두번째 컬럼에는 null이 출력된다.
🧶 CUBE
CUBE 함수는 ROLLUP과 비슷하지만, 첫번째 항목의 소계만 구하는 것이 아니라 모든 컬럼에 대한 합계를 계산한다. 예를 들어, 두개의 항목을 GRUOPING 한다고 하면, 첫번째 컬럼의 합계와 두번째 칼럼의 합계, 전체 칼럼의 합계까지 총 세가지가 출력된다.
이와 같은 구문을 실행했을 경우
이러한 결과값이 나오는 것을 확인할 수 있다.
🏹 GROUPING SETS
GROUPING SETS은 합계만 보여주는 함수이다. 이전의 두 함수는 GROUP BY 결과와 각각의 함수 결과를 같이 보여줬지만, GROUPING SETS 함수는 합계 결과만 가져온다.
함수의 실행 결과는 다음과 같다.
'DBMS' 카테고리의 다른 글
인덱스 기본 (0) | 2024.04.04 |
---|---|
옵티마이저와 실행계획 (0) | 2024.04.04 |
절차형 SQL (0) | 2024.04.04 |
DCL (0) | 2024.04.01 |
윈도우 함수(Window Function) (2) | 2024.03.29 |