MariaDB使用GROUP BY按5分钟分组时如何返回分组内最新时间戳
你可以直接通过取分组内最大时间戳的方式实现需求,原因是你表内的时间戳随记录递增,每个5分钟分组里最大的time值就是该组最后一条记录的时间。
修改后的SQL语句如下:
SELECT MAX(time) AS time, AVG(value) AS avg_value FROM `table` GROUP BY CEIL(time / 300) ORDER BY time ASC;
如果你的数据存在缺失分钟的情况,希望统一返回标准5分钟块的结束时间(而非实际存在的最后一条记录时间),也可以使用如下写法:
SELECT CEIL(time / 300) * 300 AS time, AVG(value) AS avg_value FROM `table` GROUP BY CEIL(time / 300) ORDER BY time ASC;
注:如果你的表名实际为
table,建议保留反引号避免和SQL关键字冲突,可根据实际表名调整。
内容的提问来源于stack exchange,提问作者Zaibatsu
相关产品推荐
相关产品推荐

