mysql - 列中间隔 5 分钟的平均行数

标签 mysql time-series aggregate-functions aggregate

我想问一下如何取列中 5 分钟之间的行的平均值。 为了更准确,我有一个这样的表格

id-----link_id---------date---------------------speed 
0---------123------(24/4/2014 12:03:34)----------45 
1---------123------(24/4/2014 12:04:34)----------43 
2---------127------(24/4/2014 12:04:37)----------50 
3---------123------(28/4/2014 12:03:34)----------60 

我想创建一个新表,该表将具有具有相同 link_id 且在 5 分钟之间的行的平均速度 在我上面提到的情况下,只有前两行符合要求

我想要一个像这样的新 table

id-----link_id---------date---------------------speed 
0---------123------(24/4/2014 12:00:00)----------44 
2---------127------(24/4/2014 12:00:00)----------50 
3---------123------(28/4/2014 12:00:00)----------60 

我必须使用哪个查询来创建符合这些要求的新表?

提前谢谢

最佳答案

不清楚“五分钟之间的行的平均速度”是什么意思。所以我会猜测。

我猜您想计算每个不同的五分钟间隔的平均值。例如,您需要时间戳从 2014-04-24 12:00:00 到 2014-04-24:12:04:59 的所有项目的平均值,然后是时间戳从 2014-04-24 12 的项目的另一个平均值: 05:00 至 2014-04-24:12:09:59,依此类推。

为此,您需要从一个表达式开始,该表达式将采用任何 DATETIME 值并将其向下舍入到五分钟间隔的开始位置。你怎么得到它?

首先,此表达式会将时间戳向下舍入到它发生的分钟的开头:

  DATE_FORMAT(`date`,'%Y-%m-%d %H:%i:00')

此表达式给出一小时后的分钟数,模 5。

  MINUTE(`date`)%5

因此,这个表达式为您提供了所需的四舍五入的DATETIME:

  DATE_FORMAT(`date`,'%Y-%m-%d %H:%i:00') - INTERVAL (MINUTE(`date`)%5) MINUTE
太棒了。现在我们需要在聚合查询中使用它来计算平均速度。

SELECT link_id, 
       DATE_FORMAT(`date`,'%Y-%m-%d %H:%i:00') - INTERVAL (MINUTE(`date`)%5) MINUTE AS five_min
       AVG(speed) AS avg_speed
  FROM mytable
 GROUP BY link_id, 
          DATE_FORMAT(`date`,'%Y-%m-%d %H:%i:00') - INTERVAL (MINUTE(`date`)%5) MINUTE
 ORDER BY link_id, 
          DATE_FORMAT(`date`,'%Y-%m-%d %H:%i:00') - INTERVAL (MINUTE(`date`)%5) MINUTE

这将完成您需要完成的任务。每个不同的 link_id 和五分钟的时间间隔将占一行。时间间隔将通过给出其开始时间来命名。每行将包含该时间间隔内观察的平均速度。

在为此类查询创建规范时,仔细考虑您希望结果集的每一行包含的内容会很有帮助。如果您这样做,您可能会发现您的查询自然地按照您的规范进行。

这是关于如何执行此类操作的更广泛的文章。

http://www.plumislandmedia.net/mysql/sql-reporting-time-intervals/

关于mysql - 列中间隔 5 分钟的平均行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23425867/

相关文章:

Mysql left join 没有按预期工作

php - 拉维尔 5 : form data won't submit to the database - no error shown

mysql特殊字符编码问题

mysql - MySQL 上的死锁与锁等待超时

python - 将多个 GluonTS 预测导出到 pandas 数据框

r - 如何在时间序列(R 中)的季节性调整分量上拟合具有 ARIMA 误差的回归模型?

php - mysql 收集访客天数?

python - 如何正确扩展 Pandas 数据框?

mysql - SQL 中的分解

mysql - SQL 在每个 SELECT 请求中获取 ROW_NUMBER 和 COUNT