04. 그룹화와 관련된 함수
ROLLUP, CUBE함수
ROLLUP과 CUBE함수는 그룹화 데이터의 합계를 출력할 때 사용한다. GROUP BY 바로 뒤에 붙여 사용한다.
ROLLUP함수는 지정한 열 수에 따라 n+1개의 조합이 출력된다.
ROLLUP(A,B)
1. A그룹별 B그룹에 해당하는 결과 출력
2. A그룹에 해당하는 결과 출력
3. 전체 데이터 결과 출력
CUBE함수는 지정한 열 수에 따라 2^n개의 조합이 출력된다.
CUBE(A,B)
1. A그룹별 B그룹의 결과 출력
2. A그룹의 결과
3. B그룹의 결과
4. 전체 데이터 결과
CUBE는 특히 지정한 열이 많을수록 출력되는 조합도 많아지므로, 부분적으로 사용하는 Partial Rollup,Cube도 있다.
GROUPING SETS함수
같은 수준의 그룹화열이 여러 개일 때 각 열별 그룹화를 통해 결과 값을 출력하는 데 사용
지정한 모든 열을 각각 대그룹으로 처리하여 출력한다.
그룹화 함수
데이터 자체의 가공이나 특별한 연산 기능을 수행하지는 않지만 그룹화 데이터의 식별이쉽고 가독성을 높이기 위한 목적으로 사용한다.
GROUPING함수
ROLLUP또는 CUBE 함수를 사용한 GROUP BY절에 그룹화 대상으로 지정한 열이 그룹화된 상태로 결과가 집계되었는지 확인하는 데 사용한다. GROUP BY절에 명시된 열 중 하나를 지정할 수 있다. 결과는 0, 1로 출력되는데 0은 GROUPING함수에 지정한 열이 그룹화되었음을 의미하고, 1은 그룹화되지 않은 데이터를 의미한다.
GROUPING_ID함수
GROUPING와 마찬가지로 ROLLUP또는 CUBE함수로 연산할 때 특정 열이 그룹화되었는지를 출력하는 함수. GROUPING함수는 그룹화 여부를 검사할 열을 하나씩 지정했지만, GROUPING_ID함수는 그룹화 여부를 검사할 열을 여러개 지정할 수 있다. 지정한 열의 순서에 따라 0, 1이 하나씩 출력되고, 이렇게 0,1로 구성된 그룹화 비트 벡터 값을 2진수로 보고 10진수로 바꾼 값이 최종 결과 값이 된다.
LISTAGG함수
그룹에 속해있는 데이터를 가로로 나열할 때 사용하는 함수이다.
SELECT 이후 FROM절 앞에 작성한다.
SELECT 조회할 열 이름1,2,... LISTAGG ([나열할 열] , [데이터 구분자(, / 등)]) WITHIN GROUP (ORDER BY 나열할 열의 정렬 기준열)