Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

꺄르륵

[Oracle SQL Developer] 기초 X - 자동집계함수 본문

프로그래밍/DB

[Oracle SQL Developer] 기초 X - 자동집계함수

Teddy. 2019. 10. 14. 15:42

1. 자동집계함수(ROLLUP, CUBE)


1.1. ROLLUP(col1[,col2...])
    1.1.1. col1로 정의된 컬럼을 기준으로 추가 집계 정보를 반환한다.
      : col1은 SELECT 절에서 정의된 집계함수를 제외한 일반 컬럼을 사용한다.
      : col1이 기술된 순서(오른쪽 -> 왼쪽) 레벨에 따른 집계 정보를 반환한다.
      : 사용된 col이 n개이면 n+1개의 집계정보를 반환한다.(하위레벨 -> 상위레벨 순서)
      
    예) 장바구니테이블에서 2005년도 5월 일자별 회원별 판매수량을 구하시오
     
    --ROLLUP을 사용하지 않은 경우
    SELECT TO_DATE(SUBSTR(CART_NO,1,8),'YYYY/MM/DD') 날짜,
           CART_MEMBER 회원번호,
           SUM(CART_QTY) 수량
      FROM CART
     WHERE SUBSTR(CART_NO,1,6) LIKE '200505%'
     GROUP BY TO_DATE(SUBSTR(CART_NO,1,8),'YYYY/MM/DD'), CART_MEMBER
     ORDER BY 1;
    
    
    -- ROLLUP을 사용하면 전체 집계가 나온다.
    SELECT TO_DATE(SUBSTR(CART_NO,1,8),'YYYY/MM/DD') 날짜,
           CART_MEMBER 회원번호,
           SUM(CART_QTY) 수량
      FROM CART
     WHERE SUBSTR(CART_NO,1,6) LIKE '200505%'
     GROUP BY ROLLUP(TO_DATE(SUBSTR(CART_NO,1,8),'YYYY/MM/DD'), CART_MEMBER)
     ORDER BY 1;    
    
    
    
    예) KOR_LOAN_STATUS 테이블에서 2013년도 지역별, 월별, 구분별 대출잔액을 조회하시오.
   
    SELECT REGION 지역, 
           TO_CHAR(SUBSTR(PERIOD,5,2)) 월, 
           GUBUN 구분, 
           TO_CHAR(SUM(LOAN_JAN_AMT),'99,999,999.0') 대출잔액
      FROM KOR_LOAN_STATUS
     WHERE TO_CHAR(SUBSTR(PERIOD,1,4)) LIKE '2013%'
     GROUP BY REGION, TO_CHAR(SUBSTR(PERIOD,5,2)), GUBUN
     ORDER BY 2;
    
    -- ROLLUP을 사용하여 집계함수를 적용한다.
    CREATE OR REPLACE VIEW V_KOR AS -- VIEW 생성
     
    SELECT REGION 지역, 
           EXTRACT(MONTH FROM TO_DATE(SUBSTR(PERIOD,5,2),'MM')) 월, 
           GUBUN 구분, 
           TO_CHAR(SUM(LOAN_JAN_AMT), '99,999,990.0') 대출잔액
      FROM KOR_LOAN_STATUS
     WHERE TO_CHAR(SUBSTR(PERIOD,1,4)) LIKE '2013%' 
     GROUP BY ROLLUP(REGION, EXTRACT(MONTH FROM TO_DATE(SUBSTR(PERIOD,5,2),'MM')) , GUBUN)
     ORDER BY 1;    
     

    
    SELECT * FROM V_KOR;



  1.2. CUBE(col1[,col2...])
    1.2.1. col1로 정의된 컬럼을 기준으로 추가 집계 정보를 반환한다.
      : col1은 SELECT 절에서 정의된 집계함수를 제외한 일반 컬럼을 사용한다.
      : col1이 기술된 순서(오른쪽 -> 왼쪽) 레벨에 따른 집계 정보를 반환한다.
      : 사용된 col의 가능한 모든 조합의 경우의 수만큼의 집계정보를 반환한다.(하위레벨 -> 상위레벨 순서)
    
    
    예)
    
    SELECT REGION 지역, 
           EXTRACT(MONTH FROM TO_DATE(SUBSTR(PERIOD,5,2),'MM')) 월, 
           GUBUN 구분, 
           TO_CHAR(SUM(LOAN_JAN_AMT), '99,999,990.0') 대출잔액
      FROM KOR_LOAN_STATUS
     WHERE TO_CHAR(SUBSTR(PERIOD,1,4)) LIKE '2012%' 
     GROUP BY CUBE(REGION, EXTRACT(MONTH FROM TO_DATE(SUBSTR(PERIOD,5,2),'MM')) , GUBUN)
     ORDER BY 1;