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 |
학생 테이블의 학과별 인원수와 학년별 인원수를 계산하여 출력