#오라클 그룹함수 중에 group by는 기본이고
내가 자주 사용하는 함수 중에는 rollup이다.
< 오라클 그룹함수 >
1. Group by절
: 그룹으로 묶어 조회
ex)
select 부서, 날짜, sum(금액) tmon
from test_data
group by 부서, 날짜 ;
=> 그룹핑
2. Rollup함수
: 인자의 순서대로 소계, 총합계 구하기
ex)
select 부서, 날짜, sum(금액) tmon
from test_data
group by rollup(부서, 날짜);
=> 부서, 날짜 순서로 소계, 총합계를 구함.
3. Cube함수
: 그룹핑 컬럼이 가질 수 있는 모든 경우의 수에 대해 소계와 총합계를 구함.
ex)
select 부서, 날짜, sum(금액) tmon
from test_data
group by cube(부서, 날짜);
=> 부서, 날짜 순서가 달라도 값이 같은 소계, 총합계를 구함.
4. Grouping sets함수
: 계층구조가 나오지 않음. 인자별로 소계를 구함.
ex1)
select 부서, 날짜, sum(금액) tmon
from test_data
group by grouping sets(부서, 날짜);
=> 인자별로 소계를 구함.
ex2)
select 부서, 날짜, 팀, sum(금액) tmon
from test_data
group by grouping sets((부서, 날짜), 팀);
=> 괄호로 묶은 집합별로 집계를 구함.
부서와 날짜별 소계, 팀별 소계를 구함
5. Grouping 함수
: rollup, cube, grouping sets값에 대한 0과 1로 구분하여 결과값을 보여줌
계산된 결과에 grouping(인수)=1이 되고 아니면 grouping(인수) !=1면 0이 됨.
ex) case를 사용한 grouping 함수 응용
select
case grouping(부서) when 1 then '모든부서' else 부서 end as grp01
,case grouping(날짜) when 1 then '모든날짜' else 날짜 end as grp02
,sum(금액) tmon
from test_data
group by rollup(부서, 날짜);
=> 인자별로 소계를 구함.
※ 참조 : 데이터 전문가 지식포털 dbguide.net
여기에 예제도 많았던 것 같음.
'Development > Database' 카테고리의 다른 글
[Oracle] order by 절에서 정렬순서 변경 (0) | 2022.06.29 |
---|---|
[Oracle] 오라클 테이블 스페이스별 사용중인 용량 확인 쿼리문(GB, MB단위) (0) | 2022.06.29 |
[오라클] 테이블스페이스 용량 확인 (0) | 2022.06.23 |
[오라클] 오라클에서 3byte를 차지하는 한글 캐릭터셋 (0) | 2022.06.14 |
[오라클] delete, update한 commit 데이터 복구하기 (0) | 2022.06.13 |