분별로 통계를 내려고 하는데.. 0 2 2,504

by ccoma [SQL Query] [2014.11.30 17:42:02]


통계를 내야하는데

시간단위는 알겠는데..

만약 20분단위의 SUM 통계라고 하면

하루 LEVEL 을 92개로 나눠서 쿼리를 해야하나요?;;

간략하게 추출할 수 있는 방법이 없을까요?

mi 값으로 자르니 없는 시간에 대해서는 값이 안나오는 문제가 있네요..

 

by 마농 [2014.12.01 08:52:30]
SELECT a.hh24mi
     , NVL(b.v, 0) v
  FROM (-- 1. 기준 집합
        SELECT TO_CHAR(TO_DATE((LEVEL-1) *20*60, 'sssss'), 'hh24:mi') hh24mi
             , (LEVEL-1) * 20 mi
          FROM dual
         CONNECT BY LEVEL <= 24 * 3
        ) a
     , (-- 2. SUM 집합
        SELECT FLOOR(TO_CHAR(dt, 'sssss') /60/20)*20 mi
             , SUM(v) v
          FROM t
         WHERE dt >= TO_DATE(:v_dt, 'yyyymmdd')
           AND dt <  TO_DATE(:v_dt, 'yyyymmdd') + 1
         GROUP BY FLOOR(TO_CHAR(dt, 'sssss') /60/20)*20
        ) b
 WHERE a.mi = b.mi(+)    -- 3. 아우터 조인
 ORDER BY a.hh24mi
;

 


by ccoma [2014.12.01 11:10:11]

마농님 감사합니다.

적용해보고 염치없지만 다른 질문 생기면 다시 부탁드릴께요.;;
 

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