이곳 질문에 달린 답변들을 보면서
이런 것도 한방에 가능하구나 하며 항상 놀라는 DB 초보입니다. ^^
MySQL에서 IoT기기의 Data를 수집해서, 한시간/하루/한달 단위의 통계를 내는데,
예를 들어 raw data가 1분 주기로 report되고, 1분간의 interval data 값이 들어온다고 하면
시간단위로 group by해서 sum을 하면 통계를 낼 수 있었는데,
raw data가 1분 주기로 계속 누적되는 값으로 들어오는 경우에는 어떻게 쿼리를 작성해야할지 어렵네요.
가령 전기계량기 같으면 (1분 동안 사용한 값 vs 계속 누적되는 Total 값)의 상황입니다.
한시간/하루/한달 단위의 통계를 내려면,
누적값의 경우 이전 값을 빼줘야 실제 사용량이 나오게 되는데,
쿼리로 어떻게 해야할지 도통 떠오르지 않네요.
-- 예) 2020-01 ~ 2020-05 월별 통계 -- SELECT ym , v1 -- 현월누적 , v2 -- 전월누적 , v1 - v2 v3 -- 현월실적 FROM (SELECT DATE_FORMAT(reg_dt, '%Y-%m') ym , MAX(v) v1 -- 현월누적 , LAG(MAX(v)) OVER(ORDER BY DATE_FORMAT(reg_dt, '%Y-%m')) v2 -- 전월누적 FROM log WHERE reg_dt >= '2019-12-01' -- 1개월전 자료까지 검색 필요함. AND reg_dt < '2020-06-01' GROUP BY DATE_FORMAT(reg_dt, '%Y-%m') ) a WHERE ym >= '2020-01' ;