dte
日付列 、 ID 列 、id
および値列を含むテーブルがありますval
。各 ID には複数の日付が含まれ、各日付には複数の ID が含まれます。これはパネル データ セットです。各 ID について、現在の日付、現在の値、および最後に利用可能な日付 (現在の日付より前) の値を取得したいと考えています。mysqlでこれを行う最良の方法は何ですか? 私のテーブルはそれほど大きくなく (2 ミルのレコード)、妥当な時間内にこれを機能させたいと考えています。
データのサンプルを次に示します。
dte, id, value
2001-01-01, 1, 10
2001-01-02, 1, 20
2001-01-03, 1, 30
2001-01-04, 1, 40
2001-01-01, 2, 100
2001-01-02, 2, 200
2001-01-03, 2, 300
2001-01-05, 2, 400
2001-01-01, 3, 1000
2001-01-02, 3, 2000
2001-01-05, 3, 3000
以下を取得したいと思います。
dte, id, value, previous_value
2001-01-01, 1, 10, NULL
2001-01-02, 1, 20, 10
2001-01-03, 1, 30, 20
2001-01-04, 1, 40, 30
2001-01-01, 2, 100, NULL
2001-01-02, 2, 200, 100
2001-01-03, 2, 300, 200
2001-01-05, 2, 400, 300
2001-01-01, 3, 1000, NULL
2001-01-02, 3, 2000, 1000
2001-01-05, 3, 3000, 2000
これは、スクリプト言語を使用せずに純粋な SQL で実行する必要があります。