현재 시간단위로 들어온 데이터를 각각 평균값을 내야하는 상황인데 도저히 생각이 나질않아서 질문 드립니다!
날짜 시간 데이터
1 2 3 4 5 6 7 8 9 10 11 12 | 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 함수를 사용하여 평균을 낸다면 시간 컬럼의 전체 값의 평균을 내서 어떤식으로 응용을 해야할지 감이 잡히지 않습니다 ㅠㅠ 도움 주시면 감사하겠습니다!
선배님들께 여쭙습니다! 감사합니다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | 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 ; |