0

日付と値の列を持つテーブルがあります。テーブルには新しい値が毎日入力されます。人口が発生しない場合があります。過去の毎週月曜日に最新の値のレポートを生成する必要があります。このクエリは、2013 年 2 月 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 |
+------------+

前もって感謝します。

4

1 に答える 1