我不确定是否可以在单个查询中实现,但是我正在尝试通过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的所有日志的平均值
在19:05中查找ID 2的所有日志的平均值
在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/

10-12 12:44
查看更多