무던히 하다보면 느는

[SQL] GROUP BY절 (roll up, cube, grouping sets) 작성중 본문

SQL

[SQL] GROUP BY절 (roll up, cube, grouping sets) 작성중

무던히 하다보면 느는 2022. 7. 9. 11:30
ROLLUP 주어진 칼럼을 기준으로 그룹별 집계를 구하는 함수
CUBE 주어진 칼럼을 기준으로 모든 칼럼 조합의 그룹별 집계를 구하는 함수
GROUPING SETS 주어진 칼럼들에 대한 다양한 집계 집합을 구하는 함수

 

[STUDENT] 테이블

SID SNAME DEPT GRADE TEST
20210101 김철수 컴퓨터과 3 80
20210203 홍철수 수학과 3 90
20210109 이철수 컴퓨터과 3 82
20220102 박철수 컴퓨터과 2 60
20220204 강철수 수학과 2 100
20220206 신철수 수학과 2 40

 

🧃 ROLLUP

SELECT DEPT 학과, GRADE 학년, ROUND(AVG(TEST)) 평균
FROM STUDENT
GROUP BY ROLLUP(DEPT, GRADE);

 

RESULT

학과 학년 평균
수학과 2 70
수학과 3 90
수학과 NULL 77
컴퓨터과 2 60
컴퓨터과 3 81
컴퓨터과 NULL 74
NULL NULL 75

 

🧃 CUBE

SELECT DEPT 학과, GRADE 학년, ROUND(AVG(TEST)) 평균
FROM STUDENT
GROUP BY CUBE(DEPT, GRADE);

 

RESULT

학과 학년 평균
NULL NULL 80
NULL 2 67
NULL 3 84
수학과 NULL 77
수학과 2 70
수학과 3 90
컴퓨터과 NULL 74
컴퓨터과 2 60
컴퓨터과 3 81

 

🧃 GROUPING SETS 함수

SELECT DEPT, GRADE COUNT(*) 인원수
FROM STUDENT
GROUP BY GROUPING SETS(DEPT, GRADE);

 

RESULT

DEPT GRADE 인원수
컴퓨터과 NULL 3
수학과 NULL 3
NULL 2 3
NULL 3 3

학생 테이블의 학과별 인원수와 학년별 인원수를 계산하여 출력