要创建一个实时数据表,可以使用以下SQL语句:

CREATE TABLE real_time_data (
    id INT AUTO_INCREMENT PRIMARY KEY,
    tag_id INT,
    real_time TIMESTAMP,
    real_value FLOAT
);

为了每两秒写入一组数据,可以使用定时任务或者触发器来实现。具体实现方式取决于你使用的数据库类型和工具。

要按15分钟为一组聚合,并且时间不能为00、15、30等整数,而是按照起始时间累加15分钟进行分组,可以使用以下SQL语句:

SELECT 
    DATE_FORMAT(real_time, '%Y-%m-%d %H:') + FLOOR(MINUTE(real_time) / 15) * 15 AS start_time,
    MAX(real_value) AS max_value,
    MIN(real_value) AS min_value,
    AVG(real_value) AS avg_value
FROM 
    real_time_data
WHERE
    MOD(MINUTE(real_time), 15) != 0
GROUP BY 
    start_time
ORDER BY 
    start_time;

这段SQL语句使用DATE_FORMAT函数将时间格式化为%Y-%m-%d %H:的形式,然后将分钟数除以15并乘以15来获取起始时间。使用MAXMINAVG函数分别计算每个分组的最大值、最小值和平均值。使用WHERE子句来过滤掉分钟数为00、15、30等整数的数据。最后使用GROUP BY子句将分组聚合,并使用ORDER BY子句按照起始时间排序结果。

实时数据表聚合 - 15分钟分组,非整数时间点

原文地址: https://www.cveoy.top/t/topic/p9v1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录