본문 바로가기
SQL

[solvesql - day 14] 전력 소비량 이동 평균 구하기

by 우솨 2025. 1. 11.

https://solvesql.com/problems/moving-average-of-power-consumption/

 

https://solvesql.com/problems/moving-average-of-power-consumption/

 

solvesql.com

-- 특정 기간 동안 전력 소비 데이터를 10분 간격으로 평균 계산
SELECT 
    datetime(measured_at, '+10 minute') AS end_at, 
    -- 측정 시각(measured_at)에 10분을 더한 값을 end_at 열로 표시

    ROUND(
        AVG(zone_quads) OVER (
            ORDER BY measured_at 
            ROWS BETWEEN 5 PRECEDING AND CURRENT ROW
        ), 2
    ) AS zone_quads, 
    -- zone_quads의 이동 평균 계산:
    -- 측정 시각(measured_at) 기준으로 현재 행 포함 이전 5행까지의 평균을 소수점 둘째 자리까지 반올림

    ROUND(
        AVG(zone_smir) OVER (
            ORDER BY measured_at 
            ROWS BETWEEN 5 PRECEDING AND CURRENT ROW
        ), 2
    ) AS zone_smir, 
    -- zone_smir의 이동 평균 계산:
    -- 현재 행 포함 이전 5행까지의 평균을 소수점 둘째 자리까지 반올림

    ROUND(
        AVG(zone_boussafou) OVER (
            ORDER BY measured_at 
            ROWS BETWEEN 5 PRECEDING AND CURRENT ROW
        ), 2
    ) AS zone_boussafou 
    -- zone_boussafou의 이동 평균 계산:
    -- 현재 행 포함 이전 5행까지의 평균을 소수점 둘째 자리까지 반올림

FROM 
    power_consumptions 
    -- 전력 소비 데이터를 저장한 테이블

WHERE 
    measured_at BETWEEN '2017-01-01 00:00:00' AND '2017-02-01 00:00:00'
    -- 측정 시각이 2017년 1월 1일 0시부터 2017년 2월 1일 0시까지인 데이터만 조회