[ORACLE]오라클 함수 _ ROLLUP, CUBE, GROUPING SETS
집계함수 정리
모두가 아는 GROUP BY 함수인, SUM(), AVG(), COUNT(), MAX(), MIN() 을 빼고 ROLLUP() & CUBE() & GROUPING SETS() 함수를 정리해본다.
1. ROLLUP()
그룹의 소계와 총계를 구한다. (순서가 중요하다. 제일 앞에 놓인 것에 대해서 소계를 구하게 된다.)
1 2 3 4 5 6 7 | -- 1. 1 ROLLUP -- 각 직업별로 어떤 취미를 가진 사원이 있는지, 그 사원수와 직업별 소계 및 총계를 구하여라. SELECT MEM_JOB , MEM_LIKE , COUNT (1) FROM IC_MEMBER GROUP BY ROLLUP (MEM_JOB, MEM_LIKE) |
1 2 3 4 5 6 7 | -- 1.2 ROLLUP -- 각 취미별로 어떤 직업을 가졌는지, 그 사원수와 취미별 소계 및 총계를 구하여라. SELECT MEM_JOB , MEM_LIKE , COUNT (1) FROM IC_MEMBER GROUP BY ROLLUP (MEM_LIKE, MEM_JOB) |
2. CUBE()
각 그룹의 모든 경우의 수에 대한 소계와 총계를 구한다.
1 2 3 4 5 | -- 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 절에서 사용되며 여러개의 그룹 조건을 기술 할 수 있다.
- 각 조건별 집계를 확인 할 수 있다.
1 2 3 4 5 | -- 3. GROUPING SETS() -- 직업별, 취미별 인원수를 구하여라. SELECT MEM_JOB, MEM_LIKE, COUNT (*) FROM IC_MEMBER GROUP BY GROUPING SETS(MEM_JOB, MEM_LIKE); |
4. LISTAGG()
하나의 테이블에서 다양한 집계함수를 사용할 경우
1 2 3 4 5 6 | -- 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 |