我不确定是否可以在单个查询中实现,但是我正在尝试通过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/