gpt4 book ai didi

mysql - SQL 中的移动平均线

转载 作者:行者123 更新时间:2023-11-29 12:56:16 27 4
gpt4 key购买 nike

我有一个 MySQL 数据库,其中填充了 20 多年的功耗。我想查询给定月份的每个月的平均功耗。

例如使用此数据库,

date        power_consumption
2014/03/30 30
2014/04/30 40
2014/05/30 50
2014/06/30 20

The result would be, from 2014/04

month average_so_far_from_april_2014
2014/04 40.0
2014/05 45.0
2014/06 36.667

如果我无法在一个查询中实现这一目标,我应该使用哪个查询来检索对此任务最有用的数据? (我天真的方法是查询整个表并计算我的应用程序中的平均值。)

最佳答案

将子查询表与消费表连接,获取消费表的唯一月份,连接条件为年/月小于或等于子查询中的年/月,并使用 AVG 聚合根据按年/月分组的表格中的功耗函数

类似这样的:-

SELECT consumption_month, 
AVG(b.power_consumption)
FROM
(
SELECT DISTINCT DATE_FORMAT(`date`, '%Y%m') AS consumption_month FROM consumption_table a
) a
INNER JOIN consumption_table b
ON consumption_month >= DATE_FORMAT(b.`date`, '%Y%m')
WHERE b.`date` >= '2014/04/01'
GROUP BY consumption_month

SQL fiddle :-

http://www.sqlfiddle.com/#!2/16588/2

如果您每月只有一条记录,您可以通过仅对表自身进行联接来进一步简化它,而不需要子查询。

关于mysql - SQL 中的移动平均线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24019708/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com