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 41239 게시물 읽기
No. 41239
연속 데이터 중 일부분의 평균값을 산출하는 방법 문의드립니다.
작성자
손정하(pohang98)
작성일
2016-09-12 22:12ⓒ
2016-09-12 22:19ⓜ
조회수
6,248

아래 쿼리에서와 같이 B의값이 2보다 크고 B의 MAX값-2보다 작은값의

평균값을 구하고자합니다.

측정장치에서 처음과 끝부분의 측정오차가 심하여 이를 제거하려는 목적입니다.

B의값은 1부터 연속적으로 발생하며 최고값은 가변적입니다.(측정값의 갯수가 일정하지 않습니다.)

결과는 아래처럼 구했지만  실무적으로 Data 건수가 많아지면

시간이 많이 소요되어 사용이 불가능합니다.

다른 방법이 없을까요?

고수님들의 한수 지도 부탁드립니다. 

 

WITH TBL AS
(SELECT 'A' "A", 1 "B", 0.6 "C" FROM DUAL UNION ALL
SELECT 'A' "A", 2 "B", 0.1 "C" FROM DUAL UNION ALL
SELECT 'A' "A", 3 "B", 0.2 "C" FROM DUAL UNION ALL
SELECT 'A' "A", 4 "B", 0.3 "C" FROM DUAL UNION ALL
SELECT 'A' "A", 5 "B", 0.6 "C" FROM DUAL UNION ALL
SELECT 'A' "A", 6 "B", 0.4 "C" FROM DUAL UNION ALL
SELECT 'A' "A", 7 "B", 0.1 "C" FROM DUAL UNION ALL
SELECT 'A' "A", 8 "B", 0.5 "C" FROM DUAL UNION ALL
SELECT 'A' "A", 9 "B", 0.2 "C" FROM DUAL UNION ALL
SELECT 'A' "A", 10 "B", 0.7 "C" FROM DUAL)

SELECT A,
AVG(C)
FROM(SELECT A.A "A",
A.B "B",
A.C "C",
B.MAX "MAX"
FROM TBL A, (SELECT A, MAX(B) "MAX" FROM TBL GROUP BY A) B
WHERE A.A = B.A)
WHERE B > 2
AND B < MAX - 2
GROUP BY A

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

SELECT a
     , AVG(c) c
  FROM (SELECT a, b, c
             , MAX(b) OVER(PARTITION BY a) max_b
          FROM tbl
         WHERE b > 2
        )
 WHERE b < max_b - 2
 GROUP BY a
;

마농(manon94)님이 2016-09-13 08:54에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
41243Oracle 12c Enterprise 버전 윈도우 32bit 문의 [1]
박종혁
2016-09-21
6805
41242TABLE 변동사항 비교하여 표기 질문드립니다. [1]
기쁨이
2016-09-19
6267
41241각 테이블의 최신 한건을 가져오는 방법이 궁금합니다.
fvoel
2016-09-17
7292
41239연속 데이터 중 일부분의 평균값을 산출하는 방법 문의드립니다. [1]
손정하
2016-09-12
6248
41238(질문)프로시져 호출시 성능 저하
이철우
2016-09-12
6330
41237유저정의함수를 사용하는 SQL의 성능에 대해서 [1]
선도리
2016-09-11
6521
41236토드, sql Developer 의 쿼리결과가 다른이유
최의심
2016-09-08
6358
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.052초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다