我有一个带有日期和值列的表。该表每天都会填充新值。有时人口不会发生。我需要在过去的每个星期一生成一份最新值的报告。此查询显示 2013-02-18 未收集任何数据。
mysql> 从表中选择日期,其中 dayofweek(date) = 2;
+------------+
| date |
+------------+
| 2013-02-04 |
| 2013-02-11 |
| 2013-02-25 |
| 2013-03-04 |
| 2013-03-11 |
| 2013-03-18 |
| 2013-03-25 |
+------------+
7 rows in set (0.00 sec)
所以我想获得那个星期一的最新值。如果我知道这样的缺失日期,我可以单独使用 <= max(date) 来做到这一点:
mysql> select max(date) from table where date <= "2013-02-18";
+------------+
| max(date) |
+------------+
| 2013-02-14 |
+------------+
1 row in set (0.00)
这表明 2013-02-18 的最新值是在 2013-02-14 收集的。所以我需要一个查询来返回每个星期一的最新值。如果当天不存在任何值,则使用最新的先前现有值。我的输出应该是这样的:
+------------+
| date |
+------------|
| 2013-02-04 |
| 2013-02-11 |
| 2013-02-14 |
| 2013-02-25 |
| 2013-03-04 |
| 2013-03-11 |
| 2013-03-18 |
| 2013-03-25 |
+------------+
提前致谢。