计算 MySQL 中每个唯一 ID 与前一行的日期差异

him*_*i64 3 mysql

我是一名 SQL 初学者,正在学习查询的诀窍。我正在尝试查找同一客户购买之间的日期差异。我有一个如下所示的数据集:

ID | Purchase_Date
==================
1  | 08/10/2017
------------------
1  | 08/11/2017
------------------
1  | 08/17/2017
------------------
2  | 08/09/2017
------------------
3  | 08/08/2017
------------------
3  | 08/10/2017
Run Code Online (Sandbox Code Playgroud)

我想要有一列显示每个唯一客户购买的天数差异,以便输出如下所示:

ID | Purchase_Date | Difference
===============================
1  | 08/10/2017    | NULL
-------------------------------
1  | 08/11/2017    | 1
-------------------------------
1  | 08/17/2017    | 6
-------------------------------
2  | 08/09/2017    | NULL
-------------------------------
3  | 08/08/2017    | NULL
-------------------------------
3  | 08/10/2017    | 2
Run Code Online (Sandbox Code Playgroud)

使用 MySQL 查询来解决此问题的最佳方法是什么?

Cha*_*ana 5

没那么难,只需使用子查询来查找客户每个现有购买的先前购买,并自联接到该记录。

Select t.id, t.PurchaseDate, p.Purchase_date,
    DATEDIFF(t.PurchaseDate, p.Purchase_date) Difference
From myTable t          -- t for This purchase record
    left join myTable p -- p for Previous purchase record
       on p.id = t.Id 
         and p.purchase_date =
           (Select Max(purchase_date)
            from mytable
            where id = t.id
               and purchase_date < 
                   t.purchaseDate) 
Run Code Online (Sandbox Code Playgroud)