我有一个表,其中包含一个日期列 、dte
一个 id 列id
和一个值列val
。每个 id 包含多个日期,每个日期包含多个 id:这是一个面板数据集。我想检索每个 id 的当前日期、当前值和上一个可用日期(当前日期之前)的值。在 mysql 中执行此操作的最佳方法是什么?我的表不是很大(200 万条记录),我希望它能够在合理的时间内工作。
以下是数据示例:
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 中完成,而不需要涉及任何脚本语言。