sql - 在 MySQL 中将 SUM 和 AVG 与 GROUP BY 相结合

标签 sql mysql logging

我不确定这是否可以在单个查询中实现,但我正在尝试使用 MySQL 实现以下目标,但尚未找到解决方案。

我有一个结构有点像这样的表:

 ID     LOG_VALUE   LOG_TIME     

  1        5000     19:05:42   
  2        6205     19:05:45
  3        1000     19:05:40  
  1        5000     19:05:52    
  2        6403     19:05:55   
  3        1500     19:05:50
  1        5000     19:06:02    
  2        6403     19:06:05   
  3        1500     19:06:00

行以固定的时间间隔(即每 10 秒)插入到此日志表中。我想查询记录以计算每分钟的组合平均 log_value。

我遇到的问题是,我不确定如何计算每个 ID 每分钟的平均值,以及任何给定分钟的平均值之和,只能计算一个或另一个。

基本上我想实现这个过程:

  • 找出 19:05 中 ID 1 的所有日志的平均值
  • 找出 ID 2 在 19:05 的所有日志的平均值
  • 找出 19:05 中 ID 3 的所有日志的平均值
  • 将平均值相加得到 19:05 的总数
  • 在 19:06 做同样的事情

下面的 SQL 没有执行我想要的操作,但我已包含它以帮助解决问题。

SELECT ROUND(AVG(log_value)) AS average_value, EXTRACT(HOUR_MINUTE FROM log_time)
FROM (`logs`)
GROUP BY MINUTE(log_time), id
ORDER BY log_time DESC

感谢您提供的任何帮助。

最佳答案

尝试跟随

SELECT 
   ROUND(AVG(log_value)) AS average_value, 
   EXTRACT(HOUR_MINUTE FROM log_time),
   id
FROM (`logs`)
GROUP BY 
   EXTRACT(HOUR_MINUTE FROM log_time), id
ORDER BY 
   log_time DESC

关于sql - 在 MySQL 中将 SUM 和 AVG 与 GROUP BY 相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1430051/

相关文章:

c# - 解析,parseexact字符串(varchar)从db mysql到sql查询中的datetimepicker C#

php - 什么是队列访问并发解决方案?

tomcat - Grails 应用程序无法在 Tomcat7 中启动 - 无法从日志中获取任何有用的信息?

python - 为什么 TimedRotatingFileHandler 不能正常工作以及如何解决这个问题(轮换工作,但缺少日志行)当日志行

php - 在外部存储过程中使用 MySQL 变量

php - 从 postgresql 后端的存储过程中检索通知

sql - 更新 MS SQL 列中的部分字符串

sql - 在多个 SQL 查询中测试性能

MySQL游标更新循环

elasticsearch - 提取管道中我的文档字段的类型是什么?