基于GridDB窄表计算IoT项目中传感器读数的最值与平均值
GridDB 时序传感器数据统计查询方案
首先需要指出:你的建表语句缺少时间戳字段,而按特定时间段过滤数据的需求必须依赖该字段。先调整表结构,建议同时给时间字段设置分区(GridDB对时序数据的分区优化能大幅提升查询性能):
CREATE TABLE sensor_reading( sensor_reading_id INTEGER PRIMARY KEY, sensor_reading_sensor_id STRING NOT NULL, sensor_reading_read_value DOUBLE NOT NULL, sensor_reading_timestamp TIMESTAMP NOT NULL ) PARTITION BY RANGE (sensor_reading_timestamp) EVERY (1 DAY); -- 按天分区,可根据数据量调整为小时/周
如果表已创建,可通过以下语句补加时间字段:
ALTER TABLE sensor_reading ADD COLUMN sensor_reading_timestamp TIMESTAMP NOT NULL;
核心查询语句
以下是实现特定时间段内各传感器最大值、最小值、平均值统计的SQL,结果会按传感器ID分组,每个传感器对应一行统计数据:
SELECT sensor_reading_sensor_id AS sensor_id, MAX(sensor_reading_read_value) AS max, MIN(sensor_reading_read_value) AS min, AVG(sensor_reading_read_value) AS average FROM sensor_reading WHERE sensor_reading_timestamp BETWEEN TIMESTAMP '2024-01-01 00:00:00' AND TIMESTAMP '2024-01-02 00:00:00' -- 替换为你的目标时间段 GROUP BY sensor_reading_sensor_id;
关键说明
WHERE子句通过BETWEEN指定时间范围,GridDB支持标准的TIMESTAMP格式字符串作为输入GROUP BY sensor_reading_sensor_id确保每个传感器的统计结果单独成行- 聚合函数
MAX/MIN/AVG直接计算对应统计值,通过AS设置你需要的列名
内容的提问来源于stack exchange,提问作者Abrham Getachew
相关产品推荐
相关产品推荐

