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 40469 게시물 읽기
No. 40469
오라클 SQL 또는 PL/SQL 질문입니다..몇일째 고생중..
작성자
월화수목금금금(allycome)
작성일
2014-05-22 15:39ⓒ
2014-05-22 16:21ⓜ
조회수
6,812

오라클 SQL또는 프로시저로 밑에 데이터를 맨밑에 표대로 표현 하기 위하여 어떻게 만들어야 될까요?

 

 

===========================데이터=================================

TM | T1 | T2 | T3 | CNT --컬럼명

201404011035 | CAR | VER1 | BLACK | 0

201404011040 | CAR | VER1 | BLACK | 0

201404011045 | CAR | VER1 | BLACK | 0

201404011050 | CAR | VER1 | BLACK | 0

201404011055 | CAR | VER1 | BLACK | 0

201404011100 | CAR | VER1 | BLACK | 288

201404011105 | CAR | VER1 | BLACK | 298

201404012105 | CAR | VER1 | BLACK | 0

 

 

 

위의 데이터를 5분간격으로 연속적으로 되어 있는 데이터만 시작시간 ~ 끝시간을 넣고 값은 연속적일때는 평균값 으로 체워 넣어 표현.

 

※ 단 앞에 시간대가 0일때는 0인 갯수만큼 평균 하고 연속적이지 않을때는 그대로 값을 가져가는 SQL과 프로시저를 어떻게 만들어야 될까요?

 

===========================결과값=================================

 

START_TM | END_TM | T1 | T2 | T3 | CNT --컬럼명

201404011035 | 201404011100 | CAR | VER1 | BLACK | 48

201404011105 | 201404011105 | CAR | VER1 | BLACK | 298

201404012105 | 201404012105 | CAR | VER1 | BLACK | 0

 

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

WITH t AS
(
SELECT '201404011035' tm, 'CAR' t1, 'VER1' t2, 'BLACK' t3, 0 cnt FROM dual
UNION ALL SELECT '201404011040', 'CAR', 'VER1', 'BLACK',   0 FROM dual
UNION ALL SELECT '201404011045', 'CAR', 'VER1', 'BLACK',   0 FROM dual
UNION ALL SELECT '201404011050', 'CAR', 'VER1', 'BLACK',   0 FROM dual
UNION ALL SELECT '201404011055', 'CAR', 'VER1', 'BLACK',   0 FROM dual
UNION ALL SELECT '201404011100', 'CAR', 'VER1', 'BLACK', 288 FROM dual
UNION ALL SELECT '201404011105', 'CAR', 'VER1', 'BLACK', 298 FROM dual
UNION ALL SELECT '201404012105', 'CAR', 'VER1', 'BLACK',   0 FROM dual
)
SELECT MIN(tm) stm
     , MAX(tm) etm
     , t1, t2, t3
     , ROUND(AVG(cnt), 2) cnt
  FROM (SELECT tm, t1, t2, t3, cnt
             , SUM(SIGN(cnt)) OVER(PARTITION BY t1, t2, t3
                                       ORDER BY tm DESC) grp
          FROM t
        )
 GROUP BY t1, t2, t3, grp
 ORDER BY t1, t2, t3, stm
;

마농(manon94)님이 2014-05-22 17:48에 작성한 댓글입니다.

마농님 감사합니다^^

월화수목금금금님이 2014-05-23 10:14에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
40472인서트 프로시저에서 특정칼럼 때문에 질문드립니다. [2]
도토리
2014-05-26
7956
40471숫자 or 문자 비교하여 같은 값이면 count 제외처리 [2]
정상기
2014-05-23
7307
40470VIEW에서 connect by 사용법
초보
2014-05-22
6761
40469오라클 SQL 또는 PL/SQL 질문입니다..몇일째 고생중.. [2]
월화수목금금금
2014-05-22
6812
404679i에서 REGEXP_REPLACE 사용할수 있는 방법 없나요? [1]
새터니
2014-05-22
8488
40466demo_proc.mk 파일 생성 또는 위치 문의
하정민
2014-05-21
6967
40465랜덤하게 배치해야하는 문제입니다. 마농님 도와주세요... [2]
도끼발
2014-05-21
7413
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다