shop-wiz logo
Follow Us on Facebook Follow Us on Google+ Follow Us on Twitter Follow Us on LinkedIn
제목 [ 응용예제 ] connect by를 사용한 월별 통계 및 누적 통계 구하기
등록일 2013.02.05 HIT 7557 작성자 폰돌
하기에 기록된 것에 대한 추가적 예제이다.

-- 월별 회원 유입사항 
-- 월별 성별회원가입을 구한다(날짜별 맵핑 시작).
    SELECT TO_CHAR(YMD.CURR_DT, 'YYYY-MM') REG_DT
           ,SUM(M.MALE) AS MALE
           ,SUM(M.FEMALE) AS FEMALE
           ,SUM(M.UNKNOWN) AS UNKNOWN
    FROM 
    -- 월별 성별회원가입을 구한다(시작)
    (
            SELECT REG_DT, DECODE(MALE_YN, 'T', 1, 0) AS MALE, DECODE(MALE_YN, 'F', 1, 0) AS FEMALE, DECODE(MALE_YN, '', 1, 0) AS UNKNOWN 
            FROM COMM_MEMBER_BASIC A
            WHERE REG_DT > to_date('20120101', 'YYYY-MM-DD') and REG_DT <= to_date('20130101' || ' 235959', 'YYYY-MM-DD HH24MISS') 
        )M,  
    -- 월별 성별회원가입을 구한다(끝).
    -- 월별순서를 리스트 한다(시작).
    (
    SELECT ADD_MONTHS(TO_DATE('20120101','YYYYMMDD'), LEVEL -1) CURR_DT
    FROM DUAL
    CONNECT BY ADD_MONTHS(TO_DATE('20120101','YYYYMMDD'), LEVEL -1)  <= TO_DATE('20130101','YYYYMMDD')) YMD
    -- 월별순서를 리스트 한다(끝).
    WHERE TO_CHAR(M.REG_DT(+), 'YYYY-MM') = TO_CHAR(YMD.CURR_DT, 'YYYY-MM')
    GROUP BY YMD.CURR_DT
    ORDER BY YMD.CURR_DT DESC;
-- 월별 성별회원가입을 구한다(날짜별 맵핑 끝).  
    
    
-- 월별 회원 유입사항(누적)
-- 누적은 상기 조건과 별반다르지 않다. 단지 where절에 '=' 대신에 '<=' 을 사용하면 누적으로 변한다.
-- 월별 성별회원가입을 구한다(날짜별 맵핑 시작).
    SELECT TO_CHAR(YMD.CURR_DT, 'YYYY-MM') REG_DT
           ,SUM(M.MALE) AS MALE
           ,SUM(M.FEMALE) AS FEMALE
           ,SUM(M.UNKNOWN) AS UNKNOWN
    FROM 
    -- 월별 성별회원가입을 구한다(시작)
    (
            SELECT REG_DT, DECODE(MALE_YN, 'T', 1, 0) AS MALE, DECODE(MALE_YN, 'F', 1, 0) AS FEMALE, DECODE(MALE_YN, '', 1, 0) AS UNKNOWN 
            FROM COMM_MEMBER_BASIC A
            WHERE REG_DT > to_date('20120101', 'YYYY-MM-DD') and REG_DT <= to_date('20130101' || ' 235959', 'YYYY-MM-DD HH24MISS') 
        )M,  
    -- 월별 성별회원가입을 구한다(끝).
    -- 월별순서를 리스트 한다(시작).
    (
    SELECT ADD_MONTHS(TO_DATE('20120101','YYYYMMDD'), LEVEL -1) CURR_DT
    FROM DUAL
    CONNECT BY ADD_MONTHS(TO_DATE('20120101','YYYYMMDD'), LEVEL -1)  <= TO_DATE('20130101','YYYYMMDD')) YMD
    -- 월별순서를 리스트 한다(끝).
    WHERE TO_CHAR(M.REG_DT(+), 'YYYY-MM') <= TO_CHAR(YMD.CURR_DT, 'YYYY-MM')
    GROUP BY YMD.CURR_DT
    ORDER BY YMD.CURR_DT DESC;
-- 월별 성별회원가입을 구한다(날짜별 맵핑 끝). 
댓글보기
등록된 댓글이 없습니다.

Powered by shop-wiz since 2002, e-mail:wangta69@naver.com