코딩항해기

[DBMS/Oracle] 다차원 집계함수 (CUBE, ROLLUP, GROUPING SETS) 본문

DBMS/Oracle

[DBMS/Oracle] 다차원 집계함수 (CUBE, ROLLUP, GROUPING SETS)

miniBcake 2024. 8. 24. 22:03

 

 

ROLLUP

주어진 그룹 기준에 따라 계층적인 소계를 계산한다. 주로 데이터의 총합, 부분합을 구할 때 사용한다. 예를 들어, 부서별, 직급별 급여 합계를 구하고 전체 합계를 구할 수 있다. 계층적이기 때문에 앞쪽 열부터 소계가 계산되고, 마지막에는 전체 합계가 포함된다.

 

예시: ROLLUP(a, b, c)

  • (a, b, c) : a, b, c별 소계
  • (a, b) : a, b별 소계
  • (a) : a별 소계
  • () : 전체 소계
 

CUBE

주어진 그룹 기준의 모든 조합에 대해 소계를 계산한다. ROLLUP과 달리, 모든 가능한 그룹 조합의 소계를 계산하며, 각각의 열에 대한 소계, 그리고 전체 합계도 함께 계산한다. 매개변수의 순서가 달라져도 값에 영향이 없다.

 

예시: CUBE(a, b, c)

  • (a, b, c) : a, b, c별 소계
  • (a, b) : a, b별 소계
  • (a, c) : a, c별 소계
  • (b, c) : b, c별 소계
  • (a) : a별 소계
  • (b) : b별 소계
  • (c) : c별 소계
  • () : 전체 소계
 
 

GROUPING SETS

명시적으로 지정한 그룹화 집합에 대해서만 소계를 계산한다. 필요에 따라 특정 그룹화 조합의 소계만을 선택적으로 계산할 수 있다. 다른 그룹화 방법들과 달리, 원하는 조합만 선택적으로 계산할 수 있다. 매개변수의 순서가 달라져도 값에 영향이 없다.

 

예시: GROUPING SETS(a, (a, b), ())

  • (a) : a별 소계
  • (a, b) : a, b별 소계
  • () : 전체 소계