database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 39270 게시물 읽기
No. 39270
일별 가용율 통계 작업 도움 부탁 드립니다,(날자 분할)
작성자
구상모(TopMage)
작성일
2012-02-06 18:15ⓒ
2012-02-07 00:04ⓜ
조회수
4,422

일별 사용 시간을 체크해서 가용율을 구하고 있는데요.

데이터 구조는 이렇게 되어 있습니다.

기존엔 당일만 처리해서 시작시간과 끝시간을 계산해서 runtime을 구했는데

이번에 일 단위를 넘어가면서 문제가 생겼습니다.

예약시간이 하루를 넘기면서 runtime이 24시간을 넘겨 버려 가용율이 100%를 넘겨 버리게 됐습니다.

rvrvsdate rvrvedate caid mbsex grtype runtime
2012-02-01 오후 1:00:00 2012-02-01 오후 1:30:00 CAR_0000000000000071 M 003 0.5
2012-02-01 오후 8:00:00 2012-02-01 오후 10:00:00 CAR_0000000000000070 M 002 2
2012-02-01 오후 6:30:00 2012-02-01 오후 7:30:00 CAR_0000000000000071 F 003 1
2012-02-02 오전 1:30:00 2012-02-04 오후 6:30:00 CAR_0000000000000070 M 003 65
2012-02-05 오전 3:30:00 2012-02-06 오후 9:30:00 CAR_0000000000000080 F 001 42
2012-02-06 오전 5:00:00 2012-02-06 오후 7:00:00 CAR_0000000000000080 M 003 14
2012-02-06 오후 6:30:00 2012-02-06 오후 7:30:00 CAR_0000000000000071 M 003 1

 

기존 쿼리는 아래와 같습니다.


select
    rvrvsdate
    , count(caid)
    , sum(runtime) runtime
    , (nvl(SUM(stman),0)/count(caid) *100) stman
    , (nvl(SUM(stwoman),0)/count(caid) *100) stwoman
    , (nvl(SUM(stperson),0)/count(caid) *100) stperson
    , (nvl(SUM(stcompany),0)/count(caid) *100) stcompany
    , (nvl(SUM(stschool),0)/count(caid) *100) stschool
   , (sum(runtime)/(count(caid) *24)*100) stratio
from (
        select
            TO_CHAR( a.rvrvsdate, 'YYYYMMDD' ) rvrvsdate
            , caid
            ,(rvrvedate -rvrvsdate)*24  runtime
            , case when mbsex='M' then 1 end stman
            , case when mbsex='F' then 1 end stwoman
            , case when grtype='001' then 1 end stperson
            , case when grtype='002' then 1 end stcompany
            , case when grtype='003' then 1 end stschool
        from tbreservation a
        left outer join tbmember b on a.mbid=b.mbid
        where 1=1
)
group by rvrvsdate
order by rvrvsdate
 

 

위의 색깔 부분이 아래와 같이 날자 구분되어져 시간이 계산되길 원합니다.

고수님들의 조언 부탁 드립니다.

2012-02-02 오전 1:30:00 2012-02-02 오후 11:59:59 CAR_0000000000000070 M 003 22.5
2012-02-03 오전 00:00:00 2012-02-03 오후 11:59:59 CAR_0000000000000070 M 003 24
2012-02-04 오전 00:00:00 2012-02-04 오후 6:30:00 CAR_0000000000000070 M 003 18.5
2012-02-05 오전 3:30:00 2012-02-05 오후 11:59:59 CAR_0000000000000080 F 001 20.5
2012-02-06 오전 00:00:00 2012-02-06 오후 9:30:00 CAR_0000000000000080 F 001 21.5

 

이 글에 대한 댓글이 총 2건 있습니다.

WITH t AS
(
SELECT TO_DATE('201202011300', 'yyyymmddhh24mi') rvrvsdate
     , TO_DATE('201202011330', 'yyyymmddhh24mi') rvrvedate
  FROM dual
UNION ALL SELECT TO_DATE('201202012000', 'yyyymmddhh24mi'), TO_DATE('201202012200', 'yyyymmddhh24mi') FROM dual
UNION ALL SELECT TO_DATE('201202011830', 'yyyymmddhh24mi'), TO_DATE('201202011930', 'yyyymmddhh24mi') FROM dual
UNION ALL SELECT TO_DATE('201202020130', 'yyyymmddhh24mi'), TO_DATE('201202041830', 'yyyymmddhh24mi') FROM dual
UNION ALL SELECT TO_DATE('201202050330', 'yyyymmddhh24mi'), TO_DATE('201202062130', 'yyyymmddhh24mi') FROM dual
UNION ALL SELECT TO_DATE('201202060500', 'yyyymmddhh24mi'), TO_DATE('201202061900', 'yyyymmddhh24mi') FROM dual
UNION ALL SELECT TO_DATE('201202061830', 'yyyymmddhh24mi'), TO_DATE('201202061930', 'yyyymmddhh24mi') FROM dual

)
SELECT GREATEST(rvrvsdate, TRUNC(rvrvsdate) + lv) rvrvsdate
     , LEAST(rvrvedate, TRUNC(rvrvsdate) + lv + .99999) rvrvedate
  FROM t
     , (SELECT LEVEL - 1 lv FROM dual CONNECT BY LEVEL <= 9)
 WHERE lv <= TRUNC(rvrvedate) - TRUNC(rvrvsdate)
;

마농(manon94)님이 2012-02-07 09:07에 작성한 댓글입니다.
이 댓글은 2012-02-07 09:07에 마지막으로 수정되었습니다.

마농님 감사합니다.

많은 도움이 되었습니다. ^^

구상모(TopMage)님이 2012-02-08 00:24에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
39274모든 파일이 있을 경우 복구가 가능 한지요?
qprk
2012-02-08
3492
39273고수님들께 조언 부탁 드리겠습니다. [4]
박정우
2012-02-08
4252
39272여러개의 레코드를 하나로 그룹바이하면서 합칠수있나요? [1]
김주환
2012-02-07
4715
39270일별 가용율 통계 작업 도움 부탁 드립니다,(날자 분할) [2]
구상모
2012-02-06
4422
39269혹시..이런거 가능할까요??? [1]
일쌍다반사
2012-02-06
3742
3926810g 관련 CPU 100% 차는 현상입니다.ㅠㅠ [1]
지훈
2012-02-06
4006
39266DUL 급히 필요합니다.
달려라쑹
2012-02-03
3507
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다