현재 시간단위로 들어온 데이터를 각각 평균값을 내야하는 상황인데 도저히 생각이 나질않아서 질문 드립니다!
날짜 시간 데이터
2021/07/01 10:01 1 1 1 2021/07/01 10:02 1 1 1 2021/07/01 10:03 1 1 1 2021/07/01 10:04 1 1 1 2021/07/01 10:05 1 1 1 2021/07/01 10:06 1 1 1 2021/07/01 10:07 1 1 1 2021/07/01 10:08 1 1 1 2021/07/01 10:09 1 1 1 2021/07/01 10:10 1 1 1 2021/07/01 10:11 1 1 1 2021/07/01 10:12 1 1 1
예를들어 이렇게 날짜 시간 데이터가 있다고 하면
전체 시간의 평균이 아닌 부분별로 1~3분까지를 3분데이터 평균 3~6분까지를 6분데이터 평균 6~9분까지를 9분데이터 평균 값으로 나타내고 싶은데
avg 함수를 사용하여 평균을 낸다면 시간 컬럼의 전체 값의 평균을 내서 어떤식으로 응용을 해야할지 감이 잡히지 않습니다 ㅠㅠ 도움 주시면 감사하겠습니다!
선배님들께 여쭙습니다! 감사합니다
WITH t AS ( SELECT '2021/07/01' dt, '09:59' tm, 1 v1, 1 v2, 1 v3 --> 2021/07/01 10:00 UNION ALL SELECT '2021/07/01', '10:00', 1, 1, 1 --> 2021/07/01 10:00 UNION ALL SELECT '2021/07/01', '10:01', 1, 1, 1 --> 2021/07/01 10:03 UNION ALL SELECT '2021/07/01', '10:02', 1, 1, 1 --> 2021/07/01 10:03 UNION ALL SELECT '2021/07/01', '10:03', 1, 1, 1 --> 2021/07/01 10:03 UNION ALL SELECT '2021/07/01', '10:04', 1, 1, 1 --> 2021/07/01 10:06 UNION ALL SELECT '2021/07/01', '10:05', 1, 1, 1 --> 2021/07/01 10:06 UNION ALL SELECT '2021/07/01', '10:06', 1, 1, 1 --> 2021/07/01 10:06 UNION ALL SELECT '2021/07/01', '10:07', 1, 1, 1 --> 2021/07/01 10:09 UNION ALL SELECT '2021/07/01', '10:08', 1, 1, 1 --> 2021/07/01 10:09 UNION ALL SELECT '2021/07/01', '10:09', 1, 1, 1 --> 2021/07/01 10:09 UNION ALL SELECT '2021/07/01', '10:10', 1, 1, 1 --> 2021/07/01 10:12 UNION ALL SELECT '2021/07/01', '10:11', 1, 1, 1 --> 2021/07/01 10:12 UNION ALL SELECT '2021/07/01', '10:12', 1, 1, 1 --> 2021/07/01 10:12 UNION ALL SELECT '2021/07/01', '23:57', 1, 1, 1 --> 2021/07/01 23:57 UNION ALL SELECT '2021/07/01', '23:58', 1, 1, 1 --> 2021/07/02 00:00 UNION ALL SELECT '2021/07/01', '23:59', 1, 1, 1 --> 2021/07/02 00:00 ) SELECT dttm , CONVERT(VARCHAR(10), dttm, 111) dt , CONVERT(VARCHAR( 5), dttm, 108) tm , AVG(v1) v1 , AVG(v2) v2 , AVG(v3) v3 , COUNT(*) cnt FROM (SELECT dt, tm , v1, v2, v3 , DATEADD(mi, (LEFT(tm, 2) * 60 + RIGHT(tm, 2) + 2) / 3 * 3, dt) dttm FROM t ) a GROUP BY dttm ;