【发布时间】:2021-04-19 19:59:06
【问题描述】:
在我的 MySQL 数据库中,我有以下名为 MYDATA 的视图(最初组合了 2 个数据表)。
表我的数据
| user | myDate | items |
|---|---|---|
| 17 | 2020-01-01 | 1.0 |
| 22 | 2020-01-01 | 6.0 |
| 17 | 2020-01-02 | 3.2 |
| 17 | 2020-01-04 | 4.0 |
| 17 | 2020-01-08 | 1.0 |
| 17 | 2020-01-09 | 6.2 |
| 22 | 2020-01-09 | 4.0 |
| 17 | 2020-01-10 | 5.3 |
如您所见,并非所有日期(myDate 列)都包含项目。对于选定的用户(即用户 17),我需要计算过去 14 天(包括“这一天”)所有日期(即包括 2020-01-03 不包括在MYDATA 表)。所以基本上我想获得以下内容:
| user | myDate | result |
|---|---|---|
| 17 | 2020-01-01 | (avg last 14 days) |
| 17 | 2020-01-02 | (avg last 14 days) |
| 17 | 2020-01-03 | (avg last 14 days) |
| ... | ... | ... |
| 17 | 2020-12-30 | (avg last 14 days) |
| 17 | 2020-12-31 | (avg last 14 days) |
随意在 SQLFiddle 中使用它:http://sqlfiddle.com/#!9/02cc94/1
如果需要,我还有一个包含所有年份日期的“日历”表。
表日历
| myDate |
|---|
| 2020-01-01 |
| 2020-01-02 |
| 2020-01-03 |
| 2020-01-04 |
| 2020-01-05 |
| 2020-01-06 |
请问我该如何继续?谢谢你的帮助。这个问题我已经纠结了好几个月了。
【问题讨论】:
-
重要!我只有 VERSION() 5.5.62-38.14 并且不确定是否可以升级它。 ??????
-
随意在 SQLFiddle 中使用它为这个小提琴提供所需的输出。
-
最大可能的利息期长度(以天为单位)或 CALENDAR 表中的行数是多少?
-
Calendar 包含从 2014 年到今天的所有日期(我需要计算各个年份的移动平均值)。另请注意,我不需要平均值本身,但实际上是项目的总和(过去 14 天)除以 14。(就像包含空值的平均值)。
-
请严格为您的小提琴数据提供所需的输出(解释 2-3 行)。 PS。为什么在小提琴中使用
itemsINTEGER 而分配十进制值?
标签: mysql moving-average mysql-5.6