ROLLUP
ROLLUP함수는 GROUP BY절과 함께 사용됩니다.
ROLLUP을 이용하면 GROUP BY절로 집계된 결과에 더 자세한 정보를 확인할 수 있습니다.
테이블을 하나 만들어 테스트해보겠습니다.
TESTDB라는 테이블을 생성했습니다. 각각의 컬럼은 다음과 같습니다.
- SNO : 학번
- SNAME : 학생명
- HAKBU : 학부
- DEP : 전공학과
- PAY : 등록금
이제 이 테이블을 이용해서 ROLLUP이 어떤 기능을 하는지 확인해보겠습니다.
SELECT HAKBU, DEP, SUM(PAY) PAY, COUNT(SNO) S_COUNT
FROM TESTDB
GROUP BY HAKBU, DEP
ORDER BY HAKBU
먼저 학부의 학과별 등록금의 총액과 학생 수를 조회해보겠습니다.
위와 같이 학부의 학과별 등록금 총액과 학생 수를 확인할 수 있다. 하지만 아쉬운 점이 하나 있습니다. 이 경우 학부의 등록금 총액과 학생 수를 한눈에 확인하기가 힘듭니다.
예를 들어 경상학부의 등록금 총액과 학생 수를 알고싶다면 하나씩 다 더해봐야 합니다. 물론 데이터가 적을 경우 하나씩 더해보면 됩니다. 하지만 데이터가 많다면 꽤 힘든 일이 될 것입니다.
이 때 ROLLUP을 사용하면 쉽게 알 수 있습니다.
SELECT HAKBU, DEP, SUM(PAY) PAY, COUNT(SNO) S_COUNT
FROM TESTDB
GROUP BY ROLLUP(HAKBU, DEP)
ORDER BY HAKBU
빨간 표시를 한 부분을 보겠습니다. 그룹 컬럼 다음에 기존에 없었던 학부별 등록금의 총액과 학생 수가 만들어졌습니다.
추가적으로 총 등록금의 합계와 학생 수 또한 조회가 됩니다.
이처럼 ROLLUP은 소그룹 간의 소계를 구할 때 유용하게 사용할 수 있습니다.
+ 피드백은 언제나 환영입니다 :)