쿼리 질문입니다. 0 4 1,368

by playlyun [Oracle 기초] Query [2016.05.20 11:38:03]


시간별로 데이터가 누적되는 테이블이 있는데, 

이 시간별 데이터를 구분하고싶습니다.

예를 들어서

시간 구분데이터 값1 값2
21초 A 11 22
22초 A 11 22
41초 A 11 22

 

이런데이터가 있을때

시간이 1초난 1~2번째 데이터의 평균과 20초 벌어지고 데이터가 다시 누적된 3번째~ 데이터의 평균을 구하고 싶습니다.

 

어떤식으로 접근해야될까요?

by 신이만든짝퉁 [2016.05.20 11:52:10]
WITH TMP AS
     (SELECT '21' TIME, 'A' TYPE, 1 VALUE1, 4 VALUE2
        FROM DUAL
      UNION ALL
      SELECT '22' TIME, 'A' TYPE, 2 VALUE1, 5 VALUE2
        FROM DUAL
      UNION ALL
      SELECT '41' TIME, 'A' TYPE, 3 VALUE1, 6 VALUE2
        FROM DUAL)
SELECT TIME
     , TYPE
     , VALUE1
     , VALUE2
     , AVG(VALUE1) OVER(PARTITION BY TYPE ORDER BY TIME) AVG_VALUE1
     , AVG(VALUE2) OVER(PARTITION BY TYPE ORDER BY TIME) AVG_VALUE2
  FROM TMP;

이런식의 평균 말하는 건가요?


by 마농 [2016.05.20 13:27:11]
WITH t AS
(
SELECT 21 tm, 'A' gb, 11 v1, 22 v2 FROM dual
UNION ALL SELECT 22, 'A', 11, 22 FROM dual
UNION ALL SELECT 41, 'A', 11, 22 FROM dual
)
SELECT gb
     , MIN(tm) s
     , MAX(tm) e
     , COUNT(*) cnt
     , AVG(v1) v1
     , AVG(v2) v2
  FROM (SELECT tm, gb, v1, v2 FROM t ORDER BY gb, tm)
 GROUP BY gb, tm - ROWNUM
 ORDER BY gb, s
;
-- http://www.gurubee.net/lecture/2194

 


by playlyun [2016.05.20 14:12:05]

감사합니다. 링크가 좋은 가이드가 될것 같습니다.!


by 우리집아찌 [2016.05.20 14:21:23]

원하는 결과값을 주세요.. 질문이 난해하네요.

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