-- 创建小时雨量统计表 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;