年初以来的平均

Average since beginning of the year

我有一个 MySQL table 显示在图片中。我要得到的结果在"average"列:

我想创建查询来计算自年初(1 月 1 日)以来的平均值。每行包含年初和当前行之间的平均值。每年 1 月 1 日,平均值应重置为零。

一种方法使用相关子查询:

select date, value,
       (select avg(value) from t t2 where t2.date <= t.date) as running_avg
from t
order by date;

这做出了一些假设:

  • "a"、"b"等都是数字,不是字符串。
  • a+b/2 真正的意思是 (a + b) / 2 等等。
  • 如果只需要从今年开始,则条件需要包含年份。