아래 쿼리에서와 같이 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 |