[ORACLE]오라클 함수 _ ROLLUP, CUBE, GROUPING SETS
집계함수 정리
모두가 아는 GROUP BY 함수인, SUM(), AVG(), COUNT(), MAX(), MIN() 을 빼고 ROLLUP() & CUBE() & GROUPING SETS() 함수를 정리해본다.
1. ROLLUP()
그룹의 소계와 총계를 구한다. (순서가 중요하다. 제일 앞에 놓인 것에 대해서 소계를 구하게 된다.)
-- 1. 1 ROLLUP -- 각 직업별로 어떤 취미를 가진 사원이 있는지, 그 사원수와 직업별 소계 및 총계를 구하여라. SELECT MEM_JOB , MEM_LIKE , COUNT(1) FROM IC_MEMBER GROUP BY ROLLUP(MEM_JOB, MEM_LIKE)
-- 1.2 ROLLUP -- 각 취미별로 어떤 직업을 가졌는지, 그 사원수와 취미별 소계 및 총계를 구하여라. SELECT MEM_JOB , MEM_LIKE , COUNT(1) FROM IC_MEMBER GROUP BY ROLLUP(MEM_LIKE, MEM_JOB)
2. CUBE()
각 그룹의 모든 경우의 수에 대한 소계와 총계를 구한다.
-- 2. CUBE -- 직업별로 같은 취미를 가진 사람수를 구하고, 직업별 소계와 총계를 구해라. SELECT MEM_JOB, MEM_LIKE, COUNT(*) FROM IC_MEMBER GROUP BY CUBE(MEM_JOB,MEM_LIKE)
3. GROUPING SETS()
- GROUP BY 의 확장판이라 할 수 있다.
- GROUP BY 절에서 사용되며 여러개의 그룹 조건을 기술 할 수 있다.
- 각 조건별 집계를 확인 할 수 있다.
-- 3. GROUPING SETS() -- 직업별, 취미별 인원수를 구하여라. SELECT MEM_JOB, MEM_LIKE, COUNT(*) FROM IC_MEMBER GROUP BY GROUPING SETS(MEM_JOB, MEM_LIKE);
4. LISTAGG()
하나의 테이블에서 다양한 집계함수를 사용할 경우
-- 4. LISTAGG() -- 취미별 멤버를 나열하여라. SELECT MEM_LIKE "취미" , LISTAGG(MEM_NAME,'//') WITHIN GROUP(ORDER BY MEM_ID) "LISTAGG" FROM IC_MEMBER GROUP BY MEM_LIKE;
'프로그래밍 > 오라클' 카테고리의 다른 글
[ORACLE] 오라클 날짜 함수 (0) | 2017.03.21 |
---|---|
[TOAD] 토트 탭설정 _ tab space 2 로 변경 (0) | 2017.03.20 |
[ORACLE] 오라클 SQL 문자형 함수 (0) | 2017.03.16 |
[ORACLE] 오라클 공백제거 실패 _ trim & replace (0) | 2017.03.15 |
[ORACLE] 오라클 계정 생성 (0) | 2017.03.15 |