mysql - 表中没有数据的日期的移动平均值

标签 mysql moving-average

您好,我有以下表格数据,我正在寻找移动平均线。

原始数据

date    qty 
06/11/15    5   
08/11/15    7   
09/11/15    8   
10/11/15    12  
11/11/15    34  
15/11/15    45  
16/11/15    12  
17/11/15    7   

移动平均线应考虑最近 90 天的数据,并给出当前数据的平均值,如下所示

Moving Average Data     
date    qty movingAvg
06/11/15    5   5
07/11/15    0   2.5
08/11/15    7   4
09/11/15    8   5
10/11/15    12  6.4
11/11/15    34  11
12/11/15    0   9.43
13/11/15    0   8.25
14/11/15    0   7.33
15/11/15    45  11.1
16/11/15    12  11.18
17/11/15    7   10.83

我正在使用的查询

SELECT t1.date,t1.qty, AVG(t2.qty) AS 'movingAvg'
FROM tbl t1
JOIN tbl t2 ON t1.company_id=t2.company_id 
AND DATEDIFF(t1.date, t2.date) BETWEEN 0 AND 90
WHERE t1.company_id=1234
GROUP BY t1.date
ORDER BY t1.date;

这是忽略日期而不输入,我也想包括它们。

最佳答案

像这样使用 MySQL Str_to_date

Str_to_date(t1.date,'%d/%m/%y')

或更改此

DATEDIFF(Str_to_date(t1.date,'%d/%m/%y'), Str_to_date(t2.date,'%d/%m/%y'))

MySQL STR_TO_DATE() function to convert a string into a date time value

关于mysql - 表中没有数据的日期的移动平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33751234/

相关文章:

python - 如何对预测值进行反向移动平均(在 pandas 中,rolling().mean)操作?

python-3.x - 如何构建基于时间的 EWMA

php - 在 PHP 中显示 "No Results Found"

mysql - 限制 DB::laravel 中多个表的查询

mysql - MySQL可以从事件调度程序创建新分区吗

mysql - 如何在相关子查询中计算 MySQL 中的移动平均值?

不完整时间序列数据的运行平均值

java - 使用用户输入数组的移动平均线

javascript - 在数据表中添加 html 标记添加行

php - 移动上传的文件 Faied - php