Database/Oracle

[Oracle]ROLLUP

  • -
반응형
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은 소그룹 간의 소계를 구할 때 유용하게 사용할 수 있습니다.


+ 피드백은 언제나 환영입니다 :)

반응형

'Database > Oracle' 카테고리의 다른 글

[Oracle]CASE문  (0) 2018.09.02
[Oracle]CUBE  (0) 2018.08.22
[Error]ORA-01417: 하나의 테이블은 하나의 다른 테이블과 포괄 조인할 수 있습니다  (1) 2018.08.20
[Oracle]TRUNC  (0) 2018.08.17
[Oracle]USER_SOURCE 사용  (0) 2018.08.01
Contents

포스팅 주소를 복사했습니다.

이 글이 도움이 되었다면 공감 부탁드립니다.