오라클 그룹함수 (GROUP BY, ROLLUP, CUBE) 사용방법

오라클 그룹함수 (GROUP BY, ROLLUP, CUBE) 사용방법

오라클 데이터베이스는 데이터를 효과적으로 분석하고 요약하는데 도움이 되는 다양한 그룹함수(GROUP BY, ROLLUP, CUBE)를 제공하는데요, 이러한 그룹함수를 통해 데이터를 그룹화하고 통계적 정보를 추출할 수 있으며, 이를 잘 활용하여 중요한 실무에도 적용 할 수 있습니다. 이번 글에서는 오라클 그룹함수의 다양한 종류와 기능에 대해 알아보도록 하겠습니다.

참고 테이블 (professor 테이블)

image 147

GROUP BY 절

GROUP BY 절은 데이터를 그룹화하는데 사용되는 sql 문법으로, 이 문법은 하나 이상의 열을 기준으로 행들을 그룹으로 묶어줍니다(주로 집계 함수 (COUNT(), MAX(), MIN(), SUM(), AVG())와 함께 사용되어 집계 결과를 계산하는데 사용 함)

예) 학과별 교수 수와 보직 수당 출력

SELECT deptno, COUNT(*), COUNT(comm) FROM professor GROUP BY deptno;

집계 함수인 ‘COUNT()’는 모든 행의 수를 세는 함수

‘COUNT(comm)’는 ‘comm’ 열의 값이 NULL이 아닌 행의 수를 세는 함수

‘professor’ 테이블을 ‘deptno’ 열을 기준으로 그룹화한 후, 각 그룹별로 ‘COUNT()’과 ‘COUNT(comm)’을 계산

결과

deptnoCOUNT(*)COUNT(comm)
1032
2032
3022
deptno가 10인 그룹 – 총 3개의 행이 있으며, comm 열이 NULL이 아닌 행은 2개
deptno가 20인 그룹 – 총 3개의 행이 있으며, comm 열이 NULL이 아닌 행은 2개
deptno가 30인 그룹 – 총 2개의 행이 있으며, comm 열이 NULL이 아닌 행은 2개

예) 학과별 소속 교수들의 평균 급여, 최소 급여, 최대 급여 출력

SELECT deptno, AVG(sal), MIN(sal), MAX(sal) FROM professor GROUP BY deptno;

AVG(sal) 평균, MIN(sal) 최소값, MAX(sal) 최대값

결과

deptnoAVG(sal)MIN(sal)MAX(sal)
103100.028003500
202766.666725003200
303100.022004000

ROLLUP과 CUBE 연산자

ROLLUP과 CUBE 연산자는 다양한 형태의 그룹 조합을 생성하는데 사용합니다.

ROLLUP

먼저 첫 번째로 ROLLUP은 그룹화된 데이터에 대해 계층적인 총계를 계산하는 데 사용되는데요, ROLLUP을 사용하면 지정된 열 기준으로 그룹화된 결과와 함께 추가로 총계를 구할 수 있습니다.

예) professor 테이블을 ‘deptno’ 열을 기준으로 ROLLUP

SELECT deptno, SUM(sal) FROM professor GROUP BY ROLLUP(deptno);

SUM(sal) = ‘sal’ 열의 값을 모두 합산하는 함수

결과

deptnoSUM(sal)
109400
208300
309300
NULL27000
deptno가 10인 그룹 = ‘sal’ 열 값들의 합계는 9400
deptno가 20인 그룹 = sal’ 열 값들의 합계는 8300
deptno가 30인 그룹 = ‘sal’ 열 값들의 합계는 9300
NULL = 모든 deptno 그룹의 ‘sal’ 열 값들의 합계는 27000

CUBE

두번째로 CUBE연산은 여러 열에 대한 그룹화 결과를 계산하는 데 사용되는데요, 지정된 열들을 기준으로 가능한 모든 조합의 그룹 별로 데이터를 만들어냄으로써, 부분적인 총계와 전체적인 총계를 함께 출력합니다.

예) professor 테이블을 ‘deptno’ 열과 ‘position’ 열을 기준으로 CUBE 연산을 수행

SELECT deptno, position, COUNT(*) FROM professor GROUP BY CUBE(deptno, position);

COUNT(*) = 그룹 내의 레코드 수를 계산하는 함수

결과

deptnopositionCOUNT(*)
10Manager3
10Staff0
10President0
10NULL3
20Manager0
20Staff3
20President0
20NULL3
30Manager0
30Staff0
30President2
30NULL2
NULLManager3
NULLStaff3
NULLPresident2
NULLNULL8


오라클 그룹함수는 데이터 그룹화와 통계적 분석을 위한 강력한 도구로서, 데이터베이스에서 유용하게 활용될 수 있습니다. 이번 글에서 다루지 않은 다양한 종류의 그룹 함수들도 있는데요(GROUPING, GROUPING SETS, HAVING…), 그룹함수와 관련된 다양한 기능들을 적절히 조합하여 데이터베이스에서 필요한 정보를 추출하는데 활용해봅시다.

이전 글 – [오라클] 조인 INNER JOIN(EQUI JOIN과 NON-EQUI JOIN)에 대해 알아보자

이전 글 – 오라클 데이터 조작어 DML(INSERT, UPDATE, DELETE) 활용 방법

이전 글 – 오라클 데이터 무결성 제약조건 정리 (기본키,외래키,참조키, 제약조건 생성, 추가, 삭제, 비활성화)

이전 글 – 오라클 인덱스에 대해 알아보자 (데이터베이스 실무에서 효율적으로 사용 할 수 있는 Oracle Index)

이전 글 – 오라클 뷰(VIEW) 조회 및 사용방법 (개념과 특징,종류, 장단점, 인라인뷰)

이전 글 – 오라클 사용자 권한 제어 (4가지 – 시스템 권한, 객체 권한, 롤, 동의어)

이전 글 – 오라클(데이터 웨어하우스) 분석 함수(효과적인 데이터 다차원 분석을 위한 강력한 도구)

이전 글 – 오라클 스케줄러와 JOB 관리 방법

이전 글 – 오라클 테이블 복구(테이블 데이터 복원하기)

Leave a Comment