小编典典

MySQL:选择查询,每5分钟递增一次

sql

我有一个天气数据库,它大约每70秒获取一次数据集(取决于气象站何时发送数据)。
我想使用Pchart绘制图形,但是我有太多样本,所以X轴被拧紧了。
所以我想要大约每5分钟一次的数据。(或每30分钟)
我当前有的查询是这样的:

SELECT time, temp_out FROM wmr200 WHERE date(time) = curdate()

这样可以获取最近24小时的样本,但数量太多。


阅读 443

收藏
2021-04-22

共1个答案

小编典典

以下内容将为您提供一个示例,该示例包含时间戳记为:00,:05,:10 …的任何数据。

SELECT time, temp_out FROM wmr200 WHERE date(time) = curdate()
    AND mod(minute(time),5) = 0

我正在使用取模函数来检查时间的分钟部分是否为(0或)被5整除的时间。


如果每个时间段只需要一个结果,那么我们就必须变得复杂得多。

SELECT concat(date(time),' ',hour(time),':',round(minute(time)/5,0)*5), 
       min(temp_out), avg(temp_out), max(temp_out) 
FROM wmr200 
GROUP BY date(time), hour(time), round(minute(time)/5,0)*5

我现在无权访问MySQL实例对其进行测试,但这就是这个主意。按日期,小时和round(minute(time)/5,0)*5-将每五分钟分组一次-
将分钟四舍五入到最接近的5。

它选择应该分组的时间值,以及min,avg和max temp_out,因为我不确定哪一个最适合您的情况。

但是,如果您的数据库没有5分钟的延伸数据(或30分钟的延伸,如果您使用的是30分钟),那么它可能仍然没有采样点的数据。

2021-04-22