From 5d4fa3f515859e64f5741302edfb26919c0ee5ec Mon Sep 17 00:00:00 2001 From: fengyarnom Date: Thu, 15 May 2025 17:34:35 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E4=BF=AE=E6=94=B9=E4=BA=86?= =?UTF-8?q?=E8=81=9A=E5=90=88=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/dao/sensor.go | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/internal/dao/sensor.go b/internal/dao/sensor.go index f487526..93305e2 100644 --- a/internal/dao/sensor.go +++ b/internal/dao/sensor.go @@ -56,27 +56,18 @@ func (dao *SensorDAO) GetAggregatedData(start, end time.Time, interval string) ( // 使用子查询和时间桶来实现聚合 query := ` - WITH time_buckets AS ( - SELECT - DATE_FORMAT( - DATE_SUB(timestamp, INTERVAL MOD(MINUTE(timestamp), ?) MINUTE), - '%Y-%m-%dT%H:%i:00' - ) AS bucket_time, - AVG(temperature) AS temp, - MAX(rainfall) - MIN(rainfall) AS rain, - AVG(humidity) AS hum, - AVG(wind_speed) AS wind - FROM sensor_data - WHERE timestamp BETWEEN ? AND ? - GROUP BY bucket_time - ) SELECT - bucket_time, - ROUND(temp/10, 1) AS avg_temp, - rain AS rainfall, - ROUND(hum/10, 1) AS avg_humidity, - ROUND(wind/10, 1) AS avg_wind_speed - FROM time_buckets + DATE_FORMAT( + DATE_SUB(timestamp, INTERVAL MOD(MINUTE(timestamp), ?) MINUTE), + '%Y-%m-%dT%H:%i:00' + ) AS bucket_time, + ROUND(AVG(temperature)/10, 1) AS avg_temp, + MAX(rainfall) - MIN(rainfall) AS rainfall, + ROUND(AVG(humidity)/10, 1) AS avg_humidity, + ROUND(AVG(wind_speed)/10, 1) AS avg_wind_speed + FROM sensor_data + WHERE timestamp BETWEEN ? AND ? + GROUP BY bucket_time ORDER BY bucket_time DESC `