`CUBE` 함수의 작동 방식을 이해하기 위해, 실제 데이터와 함께 예시를 살펴보겠습니다. ### 예시 데이터: 가정해보겠습니다. 다음과 같은 테이블이 있다고 가정하겠습니다: ```sql CREATE TABLE EMPLOYEES ( DEPTNO INT, JOB VARCHAR(50), SALARY INT ); INSERT INTO EMPLOYEES (DEPTNO, JOB, SALARY) VALUES (10, 'MANAGER', 1000); INSERT INTO EMPLOYEES (DEPTNO, JOB, SALARY) VALUES (10, 'CLERK', 500); INSERT INTO EMPLOYEES (DEPTNO, JOB, SALARY) VALUES (20, 'MANAGER', 1500); INSERT INTO EMPLOYEES (DEPTNO, JOB, SALARY) VALUES (20, 'CLERK', 800); INSERT INTO EMPLOYEES (DEPTNO, JOB, SALARY) VALUES (30, 'CLERK', 700); ``` 이제 `GROUP BY CUBE(DEPTNO, JOB)`을 사용하여 이 테이블에서 데이터를 그룹화해 보겠습니다. ### CUBE 구문: ```sql SELECT DEPTNO, JOB, SUM(SALARY) AS TOTAL_SALARY FROM EMPLOYEES GROUP BY CUBE(DEPTNO, JOB); ``` ### 결과: 위의 쿼리는 다음과 같은 결과를 생성합니다: | DEPTNO | JOB | TOTAL_SALARY | | | ------ | ------- | ------------ | --------------------------------------- | | 10 | MANAGER | 1000 | | | 10 | CLERK | 500 | | | 10 | NULL | 1500 | <-- DEPTNO = 10의 모든 직업(SUM) | | 20 | MANAGER | 1500 | | | 20 | CLERK | 800 | | | 20 | NULL | 2300 | <-- DEPTNO = 20의 모든 직업(SUM) | | 30 | CLERK | 700 | | | 30 | NULL | 700 | <-- DEPTNO = 30의 모든 직업(SUM) | | NULL | MANAGER | 2500 | <-- 모든 DEPTNO에서 JOB = 'MANAGER'인 경우의 합계 | | NULL | CLERK | 2000 | <-- 모든 DEPTNO에서 JOB = 'CLERK'인 경우의 합계 | | NULL | NULL | 4500 | <-- 전체 합계 | ### 설명: - `CUBE(DEPTNO, JOB)`는 `DEPTNO`와 `JOB`의 모든 조합을 그룹화합니다. - 각 `DEPTNO` 내의 `JOB`에 대한 합계뿐만 아니라, 모든 `DEPTNO`에 대해 `JOB`별로 합계를 계산합니다. - 최종적으로 `DEPTNO`와 `JOB`이 모두 `NULL`인 행은 전체 합계를 나타냅니다. 이 예시에서 `CUBE` 구문은 다양한 그룹화 조합에 대한 합계를 모두 보여줍니다. 이는 데이터의 다양한 집계를 한 번에 볼 수 있게 해주는 강력한 기능입니다. ![[Screenshot 2024-08-17 at 11.11.03 AM.png]]