Development /Database

[Oracle] 오라클 그룹함수

해피마루 2022. 6. 29. 10:05
728x90
반응형

#오라클 그룹함수 중에 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

               여기에 예제도 많았던 것 같음. 

728x90
반응형