본문 바로가기
Work/DataBase

[SQLD] 그룹함수 - GROUPING SETS 예문, 총정리

GROUP FUNCTION 

1. 소그룹 간의 소계를 계산하는 ROLLUP, - 글 바로가기

2. 다차원적인 소계를 계산하는 CUBE, - 글 바로가기

3. 특정항목에 대한 소계를 계산하는 GROUPING SETS 함수 총 3가지가 있습니다. 

 

3. GROUPING SETS 함수 

 

select * from test1

예제에 사용할 test1 테이블

 

그룹핑셋은 소계를 내는 함수가 아닙니다. 

그룹핑에 대해서 개별적인 합계를 내어주고, 이를 UNION해준것과 같은 결과를 냅니다.

 

ex >COL1 , COL2 그룹핑셋

select COL1
      ,COL2
      ,COUNT(*) 행수
  from test1 
 group by GROUPING SETS(COL1,COL2) 
 order by col1;

COL1 기준 합, COL2 기준 합을 구해서 UNION하기 때문에, CUBE와 같은 총계를 낼수없습니다.

특정 하나의 컬럼을 기준으로 묶어 Aggregation (sum avg count 등) 함수를 사용하는데 이용합니다.

 

실전 예제 >

-- grouping 합계부분만 1반환
select grouping(sex_cd)
       ,(select cd_nm from c_cmn_dtl_cd where cmn_cd ='SEX_CD' and SEX_CD=CMN_DTL_CD) 성별
       ,AGES_DIV_CD || '대' 연령대 
       ,count(AGES_DIV_CD) 고객수
  from c_Cust_base
group by rollup (AGES_DIV_CD,sex_cd)
order by AGES_DIV_CD 
;

남자고객 4800여명, 여자고객 5200여명의 통계치를 볼수있고,

어떤 연령대가 많은지 분포를 한번에 확인이 가능하도록 사용해보았습니다.

 

이상 그룹함수 포스팅마치겠습니다.  감삼당!