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