每个客户交易输出“先前交易日期”的MYSQL查询

时间:2017-06-09 01:59:28

标签: mysql sql

假设我有一张表格,反映了客户迄今为止所做的所有个人购买(请参阅下图,了解我想要的输出)

如何在MYSQL中编写一个返回这两列+:

的查询
  1. 反映该客户购买日期之前的购买日期的栏目(如果没有先前购买,则为空值)

  2. 对于大于70天的两个日期列中的每个差异输出值“1”的列,对于小于70天的差异输出值“0”,以及空值对于那些没有“事先购买”的人。

  3. 我已经在这方面工作了好几天,而且我只是在“GROUP BY”客户ID时使用它(使用需要一个日期小于另一个的自联接)。我不知道我是如何在交易级别做的。

    enter image description here

1 个答案:

答案 0 :(得分:2)

您可以使用相关子查询。以下是您获得上一个日期的方式:

select p.*,
       (select p2.purchase_date
        from purchases p2
        where p2.customerid = p.customerid and
              p2.purchase_date < p.purchase_date
        order by p2.purchase_date desc
        limit 1
       ) as prev_purchase_date
from purchases p;

您可以将其用作子查询,然后使用prev_purchase_date对最终列进行计算。