조회한 데이터와 sum을 함께 출력하고 싶습니다 0 2 1,108

by 조새롬 [2014.02.25 10:44:47]


 

SELECT PV_COUNT, DATE_NUM, DAY_CHAR, DATE_CHAR,
   ROUND(RATIO_TO_REPORT(SUM(PV_COUNT)) OVER() * 100, 2) AS BR_PERCENT   
FROM(SELECT PV_COUNT, DATE_NUM, DAY_CHAR, DATE_CHAR
   FROM(
     SELECT PV_COUNT, DT.DATE_NUM, DT.DAY_CHAR, DT.DATE_CHAR
     FROM(
       SELECT COUNT(*) AS PV_COUNT, TO_CHAR ( a.action_time, 'YYYY/MM/DD' ) AS DT_HOURS
       FROM ci_visitor_actions a
       WHERE a.action_time BETWEEN TO_DATE ( '2014/02/21' , 'YYYY/MM/DD' )
       AND TO_DATE ( '2014/02/21' , 'YYYY/MM/DD' ) + 0.99999
       AND a.id_site = 2
       GROUP BY TO_CHAR ( a.action_time, 'YYYY/MM/DD' )
       )
       ,(    
       SELECT LEVEL lv, 
       TO_CHAR(TO_DATE ( '2014/02/21' , 'YYYY/MM/DD' )-1 + LEVEL , 'YYYY/MM/DD') AS DATE_NUM, 
       TO_CHAR(TO_DATE ( '2014/02/21' , 'YYYY/MM/DD' )-1 + LEVEL , 'DY') AS DAY_CHAR,
       TO_CHAR(TO_DATE ( '2014/02/21' , 'YYYY/MM/DD' )-1 + LEVEL , 'DD') AS DATE_CHAR
       FROM dual CONNECT BY (TO_DATE ( '2014/02/21' , 'YYYY/MM/DD' )-TO_DATE ( '2014/02/21' , 'YYYY/MM/DD' ))+1 >= LEVEL
       )DT
   )
   UNION ALL
   (
     SELECT DISTINCT TO_NUMBER(NVL(SPEC_VALUE,0)) AS PV_COUNT, DT.DATE_NUM, DT.DAY_CHAR, DT.DATE_CHAR       
     FROM (
        SELECT CAST(SPEC_VALUE AS VARCHAR2(4000)) SPEC_VALUE, SPEC_DATE 
        FROM T
        WHERE ID_SPEC = 'USER_PV'
        AND SPEC_DATE >= TO_DATE ( '2014/02/16' , 'YYYY/MM/DD' ) 
        AND TO_DATE ( '2014/02/20' , 'YYYY/MM/DD' ) + 1 > SPEC_DATE
        AND id_site = 2
        )TBA
        ,(    
        SELECT LEVEL lv, 
        TO_CHAR(TO_DATE ( '2014/02/16' , 'YYYY/MM/DD' )-1 + LEVEL , 'YYYY/MM/DD') AS DATE_NUM, 
        TO_CHAR(TO_DATE ( '2014/02/16' , 'YYYY/MM/DD' )-1 + LEVEL , 'DY') AS DAY_CHAR,
        TO_CHAR(TO_DATE ( '2014/02/16' , 'YYYY/MM/DD' )-1 + LEVEL , 'DD') AS DATE_CHAR
        FROM dual CONNECT BY (TO_DATE ( '2014/02/20' , 'YYYY/MM/DD' )-TO_DATE ( '2014/02/16' , 'YYYY/MM/DD' ))+1 >= LEVEL
        )DT
        WHERE TBA.SPEC_DATE (+) = DT.DATE_NUM  
   )
)
GROUP BY PV_COUNT, DATE_NUM, DAY_CHAR, DATE_CHAR
ORDER BY DATE_NUM

이 쿼리를 출력하면

PV_COUNT | DATE_NUM | DAY_CHAR | DATE_CHAR| BR_PERCENT
0 2014/02/16  일  16  0
0  2014/02/17  월  17  0
0  2014/02/18  화  18  0
0  2014/02/19  수  19  0
122  2014/02/20  목  20  43.57
158  2014/02/21  금  21  56.43

이렇게 나옵니다.

제가 원하는 결과는
PV_COUNT를 SUM하여서 컬럼하나를 더 만들어서

PV_COUNT | DATE_NUM | DAY_CHAR | DATE_CHAR| BR_PERCENT | SUM
0 2014/02/16  일  16  0 280
0  2014/02/17  월  17  0 280
0  2014/02/18  화  18  0 280
0  2014/02/19  수  19  0 280
122  2014/02/20  목  20  43.57  280
158  2014/02/21  금  21  56.43  280

이렇게 나오는 것입니다.

SUM을 따로하는 쿼리를 만들고 싶진않고, SELECT 해온 PV_COUNT를 SUM 하고 나머지 데이터를 출력하는
방법이 있을까요??
by 임상준 [2014.02.25 11:04:46]
분석함수 검색해서 공부 해 보시면 될듯..
지난번 질문이랑 같은 맥락이네요

by 조새롬 [2014.02.25 11:08:20]

아~ 분석함수였군요
감사합니다
덕분에 공부가 많이 되었습니다.

해결할 수 있는 TIP을 주셔서 감사합니다^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입