当前位置: 首页 > 面试题库 >

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

濮丰
2023-03-14
问题内容

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

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

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


问题答案:

以下内容将为您提供一个示例,该示例包含时间戳记为: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分钟),那么它可能仍然没有采样点的数据。



 类似资料:
  • 问题内容: 我需要查询方面的帮助,比方说这是表中的数据。 我想获得至少比最后一行晚5分钟的每一行(时间戳)。在这种情况下,查询应返回: 问题答案: 递归CTE 由于每一行都取决于之前的一行,因此很难使用基于集合的方法来解决。求助于递归CTE(这是标准SQL): 请注意我的初稿中的更新: 递归CTE中不允许使用聚合函数。我用/代替,当/上的 索引 支持时应该很快。 查询每条腿周围的括号对于允许是必须

  • 问题内容: 我有一个监视系统,它每n秒收集一次数据(n大约为10,但有所不同)。我想每隔15分钟汇总一次收集的数据。有没有一种方法可以将时间戳记值合并为15分钟的块,以便分组工作? 问题答案:

  • 问题内容: 上面的查询返回如下结果, 此查询用于计算所有者拥有的传输数量。琳达有一辆汽车和一辆摩托车,所以结果应该是: 我已经尝试过此查询,但返回错误: 谁能帮我吗? 问题答案:

  • 问题内容: 我有一个名为faq_questions的表,其结构如下: 我试图建立一个给定排序顺序的查询,选择具有最高排序顺序的行。 例子: 好的,假设我为已知的排序顺序(id 4)输入了5,我需要它返回ID为3的行。由于不能保证sort_order是连续的,所以我不能只选择known_sort_order + 1。 谢谢! 问题答案: 似乎太简单了,但是看起来像您所需要的:

  • 问题内容: 我正在寻找以下解决方案。我将数据存储在表中,以跟踪客户希望在数据库中使用的特殊增量号。这是他们内部使用的特殊号码。 我要选择的是自动在表格中递增此数字。因此,我没有其他交易的问题,该交易是由使用该系统的其他人使用相同的ID号码进行的。 因此,我想选择当前数字并立即将其增加一个,这样就不会重复。如果可能的话,我将如何去做? 问题答案:

  • 问题内容: 我有Laravel应用程序,我每3秒钟定期检查一次用户的心跳登录状态(演示目的,实际上是5分钟)。对于每个节拍,我都会检查用户在当前时间的上一次活动是否也为5分钟。如果是这样,请注销它们。 这是我的代码: 我的问题是,这行不通。如果我将操作数更改为,它将在5分钟前立即注销我,如果操作数为,即使5分钟后它也不会注销我,有人可以解释为什么吗? -编辑- 感谢您提供所有答案,我通过将代码修改