자격증/SQLD - 취득완료
ROLLUP, CUBE, GROUP SET, GROUPING, LISTAGG
Ch's Lee
2025. 6. 26. 13:06
GROUP SET
-- GROUPING SETS 함수를 사용하여 컬럼별로 그룹으로 묶어 출력하기
-- 지정한 모든 열을 각각 대그룹으로 처리하여 출력
-- CUBE와 같으나 소계가 없음

RULLUP
-- ROLLUP 함수는 명시한 열에 대해 소그룹별 결과를 출력하고, 마지막에 최종결과를 출력한다.
-- ROLLUP 함수에 명시한 열에 한하여 결과가 출력되며, ROLLUP 함수에는 그룹함수를 지정할 수 없다.
-- ROLLUP 결과와 동일하게 출력되며, 그 아래에 부서와 상관없이 직책별 결과가 함께 출력된다.

CUBE
-- CUBE 함수는 지정한 모든 열에서 가능한 조합의 결과를 모두 출력한다.

GROUPING
결론적으로 GROUP BY시 해당 그룹에 소속되어 있는지 확인하는 함수이며, 그룹이면 1 - 그렇지 않으면 0 이다.
SELECT DEPARTMENT_ID 부서별
, JOB_ID 직무별
, MAX(SALARY) 최대급여
, SUM(SALARY) 최대값
, ROUND(AVG(SALARY),0) 최대평균
, GROUPING(DEPARTMENT_ID)
, GROUPING(JOB_ID)
FROM EMPLOYEES
GROUP BY CUBE(DEPARTMENT_ID, JOB_ID)
ORDER BY JOB_ID;
결과
110 AC_ACCOUNT 8300 8300 8300 0 0
AC_ACCOUNT 8300 8300 8300 1 0
110 AC_MGR 12008 12008 12008 0 0
AC_MGR 12008 12008 12008 1 0
10 AD_ASST 4400 4400 4400 0 0
AD_ASST 4400 4400 4400 1 0
90 AD_PRES 24000 24000 24000 0 0
AD_PRES 24000 24000 24000 1 0
90 AD_VP 17000 34000 17000 0 0
AD_VP 17000 34000 17000 1 0
100 FI_ACCOUNT 9000 39600 7920 0 0
FI_ACCOUNT 9000 39600 7920 1 0
100 FI_MGR 12008 12008 12008 0 0
FI_MGR 12008 12008 12008 1 0
40 HR_REP 6500 6500 6500 0 0
HR_REP 6500 6500 6500 1 0
60 IT_PROG 9000 28800 5760 0 0
IT_PROG 9000 28800 5760 1 0
20 MK_MAN 13000 13000 13000 0 0
MK_MAN 13000 13000 13000 1 0
20 MK_REP 6000 6000 6000 0 0
MK_REP 6000 6000 6000 1 0
70 PR_REP 10000 10000 10000 0 0
PR_REP 10000 10000 10000 1 0
30 PU_CLERK 3100 13900 2780 0 0
PU_CLERK 3100 13900 2780 1 0
30 PU_MAN 11000 11000 11000 0 0
PU_MAN 11000 11000 11000 1 0
80 SA_MAN 14000 61000 12200 0 0
SA_MAN 14000 61000 12200 1 0
80 SA_REP 11500 243500 8397 0 0
SA_REP 7000 7000 7000 0 0
SA_REP 11500 250500 8350 1 0
50 SH_CLERK 4200 64300 3215 0 0
SH_CLERK 4200 64300 3215 1 0
50 ST_CLERK 3600 55700 2785 0 0
ST_CLERK 3600 55700 2785 1 0
50 ST_MAN 8200 36400 7280 0 0
ST_MAN 8200 36400 7280 1 0
10 4400 4400 4400 0 1
20 13000 19000 9500 0 1
30 11000 24900 4150 0 1
40 6500 6500 6500 0 1
50 8200 156400 3476 0 1
60 9000 28800 5760 0 1
70 10000 10000 10000 0 1
80 14000 304500 8956 0 1
90 24000 58000 19333 0 1
100 12008 51608 8601 0 1
110 12008 20308 10154 0 1
7000 7000 7000 0 1
24000 691416 6462 1 1