我想计算同一个表中不同行之间的唯一日期字段的差异.
例如,给出以下数据:
id | date
---+------------
1 | 2011-01-01
2 | 2011-01-02
3 | 2011-01-15
4 | 2011-01-20
5 | 2011-01-10
6 | 2011-01-30
7 | 2011-01-03
Run Code Online (Sandbox Code Playgroud)
我想生成一个产生以下内容的查询:
id | date | days_since_last
---+------------+-----------------
1 | 2011-01-01 |
2 | 2011-01-02 | 1
7 | 2011-01-03 | 1
5 | 2011-01-10 | 7
3 | 2011-01-15 | 5
4 | 2011-01-20 | 5
6 | 2011-01-30 | 10
Run Code Online (Sandbox Code Playgroud)
我将在MySQL中使用什么日期函数的任何建议,或者是否有一个子选择可以做到这一点?
(当然,我不介意WHERE date > '2011-01-01'忽略第一行.)
相关子查询可能会有所帮助:
SELECT
id,
date,
DATEDIFF(
(SELECT MAX(date) FROM atable WHERE date < t.date),
date
) AS days_since_last
FROM atable AS t
Run Code Online (Sandbox Code Playgroud)