-- 创建小时雨量统计表
CREATE TABLE IF NOT EXISTS hourly_rainfall (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    hour_start DATETIME NOT NULL,  -- 小时开始时间（例如：2025-04-21 18:00:00）
    hour_end DATETIME NOT NULL,    -- 小时结束时间（例如：2025-04-21 19:00:00）
    rainfall INTEGER NOT NULL,     -- 该小时的雨量（整数，实际值需除以10）
    min_value INTEGER,             -- 该小时内记录的最小累积值
    max_value INTEGER,             -- 该小时内记录的最大累积值
    samples INTEGER,               -- 该小时内的采样数量
    created_at DATETIME NOT NULL,  -- 记录创建时间
    UNIQUE(hour_start)             -- 确保每小时只有一条记录
);

-- 创建用于计算历史数据的临时视图
CREATE TEMP VIEW IF NOT EXISTS hourly_data AS
SELECT 
    datetime(strftime('%Y-%m-%d %H:00:00', timestamp)) as hour_start,
    datetime(strftime('%Y-%m-%d %H:59:59', timestamp)) as hour_end,
    MIN(optical_rain) as min_value,
    MAX(optical_rain) as max_value,
    COUNT(*) as samples,
    MAX(optical_rain) - MIN(optical_rain) as rainfall
FROM sensor_data
WHERE timestamp >= '2025-04-21 18:00:00'
GROUP BY strftime('%Y-%m-%d %H', timestamp)
ORDER BY hour_start;

-- 将历史数据插入小时雨量表
INSERT OR IGNORE INTO hourly_rainfall 
    (hour_start, hour_end, rainfall, min_value, max_value, samples, created_at)
SELECT 
    hour_start, 
    hour_end, 
    rainfall,
    min_value,
    max_value,
    samples,
    datetime('now')
FROM hourly_data;
