안녕하세요.
추운 겨울에 다들 따듯한 하루가 되셨으면 좋겠습니다.
한가지 궁금한점이 있어서 글을 남깁니다.
실시간 측정을 통한 데이터 수집중입니다.
데이터베이스에 시간, 값을 포함한 데이터가 다음과 같이 저장되어 있습니다.
Table. REALTIME_DATA
Column name >> SAVE_DATE | VALUE 1 | VALUE 2 | ....
Data Format >> DATE(yyyy-MM-dd hh:mm:ss) | NUMERIC | NUMERIC| ...
이걸 분단위 시계열 데이터로 변환하여 처리하려고 Group by를 사용한 VIEW를 만들어서 사용합니다.
View. REALTIME_DATA_VIEW
Column name >> SAVE_DATE | AVG(Value 1) | AVG(VALUE 2) | ....
Data Format >> String(yyyy-MM-dd hh:mm) | NUMERIC | NUMERIC ...
그럼, VIEW를 SELECT했을 때 아래와 같은 예시 데이터가 나옵니다.
2023-12-08 14:05, 0.01, 0.02, 0.03, ....
2023-12-08 14:06, 0.01, 0.02, 0.03, ....
2023-12-08 14:07, 0.01, 0.02, 0.03, ....
2023-12-08 14:08, 0.01, 0.02, 0.03, ....
2023-12-08 14:10, 0.01, 0.02, 0.03, ....
여기서 질문이 있습니다.
노랗게 마킹된 시간을 보면 14시 09분 데이터가 없습니다.
실제로 그 땐 통신 이상으로 데이터가 안들어왔거든요.
그래서 해당 부분을 아래와 같이 처리하고 싶습니다.
2023-12-08 14:07, 0.01, 0.02, 0.03, ....
2023-12-08 14:08, 0.01, 0.02, 0.03, ....
2023-12-08 14:09, ,,,,
2023-12-08 14:10, 0.01, 0.02, 0.03, ....
2023-12-08 14:11, 0.01, 0.02, 0.03, ....
빈 시간을 찾아서 NULL값을 넣어주는 식으로요.
저는 결국 이 답을 DB에서는 찾지 못하고 프로그래밍으로 처리했습니다.
제 DB에 대한 지식이 많이 모자라서 혹시나 이 문제를 DB단에서 처리할 수 있는 QUERY나 혹은 다른 방법이 있을까 싶어
지식을 구하고자 합니다.
항상 무탈하고 행복하세요!
감사합니다.
전성용 드림.
|