by tosswin [SQL Query] MSSQL 시간간격 평균 [2024.09.19 09:58:07]
주어진 데이터는 다음과 같습니다.
run_datetime | read_data |
2021-08-21 20:16:44.000 | 26.2 |
2021-08-21 20:17:43.000 | 26.1 |
2021-08-21 20:18:43.000 | 26.2 |
2021-08-21 20:19:43.000 | 26.2 |
2021-08-21 20:20:37.000 | 26.2 |
2021-08-21 20:21:37.000 | 26.2 |
2021-08-21 20:22:34.000 | 26.2 |
2021-08-21 20:23:34.000 | 26.2 |
2021-08-21 20:24:37.000 | 26.2 |
2021-08-21 20:25:34.000 | 26.2 |
2021-08-21 20:26:34.000 | 26.2 |
2021-08-21 20:27:34.000 | 26.2 |
2021-08-21 20:28:37.000 | 26.2 |
2021-08-21 20:29:34.000 | 26.2 |
2021-08-21 20:30:37.000 | 26.2 |
2021-08-21 20:31:34.000 | 26.2 |
2021-08-21 20:32:38.000 | |
2021-08-21 20:33:34.000 | 26.2 |
2021-08-21 20:34:34.000 | 26.2 |
2021-08-21 20:35:38.000 | |
2021-08-21 20:36:37.000 | 26.3 |
2021-08-21 20:37:35.000 | 26.3 |
2021-08-21 20:38:35.000 | 26.3 |
2021-08-21 20:39:34.000 | 26.3 |
2021-08-21 20:40:34.000 | 26.3 |
2021-08-21 20:41:34.000 | 26.3 |
2021-08-21 20:42:34.000 | 26.3 |
2021-08-21 20:43:37.000 | 26.3 |
2021-08-21 20:44:34.000 | 26.3 |
2021-08-21 20:45:34.000 | 26.3 |
2021-08-21 20:46:40.000 | |
2021-08-21 20:47:41.000 | 26.3 |
2021-08-21 20:48:34.000 | 26.3 |
2021-08-21 20:49:34.000 | 26.3 |
2021-08-21 20:50:34.000 | 26.3 |
2021-08-21 20:51:34.000 | 26.3 |
2021-08-21 20:52:34.000 | 26.3 |
2021-08-21 20:53:34.000 | 26.3 |
2021-08-21 20:54:34.000 | 26.3 |
2021-08-21 20:55:37.000 | 26.4 |
현재 run_datetime이 일정하지 않게 입력되고 있습니다.
이를 구현하기 위해 5분 간격으로 데이터를 만들고 싶습니다.
run_datetime은 2021-08-21 20:15:00, 2021-08-21 20:20:00, ....., 2021-08-21 20:55:00 으로 변경하고
해당 데이터는
2021-08-21 20:15:00 -> 2021-08-21 20:13:00 ~ 20:18:00 read_data 의 평균,
2021-08-21 20:20:00 -> 2021-08-21 20:18:00 ~ 20:23:00 read_data 의 평균으로 나타내고 싶습니다.
조사를 통해 아래와 같은 쿼리문으로 하면 된다고 하여
select DATEADD(minute, DATEDIFF(minute, '2000-01-01', run_datetime) / 5 * 5, '2000-01-01') AS TimeBucket, AVG(read_data) AS AvgReadData from T group by DATEADD(minute, DATEDIFF(minute, '2000-01-01', run_datetime) / 5 * 5, '2000-01-01') order by TimeBucket;
적용해보니,
2021-08-21 20:15:00 -> 2021-08-21 20:15:00 ~ 20:20:00 read_data 의 평균으로 적용되고 있습니다.
아래와 같이 적용할 수 있는 쿼리를 어떻게 수정해야 되는 지 문의드립나다.
2021-08-21 20:15:00 -> 2021-08-21 20:13:00 ~ 20:18:00 read_data 의 평균 데이터
감사합니다.