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;
이런식의 평균 말하는 건가요?
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