SQL按时间重复输入

时间:2013-05-21 21:00:17

标签: mysql repeat

我有一个跟踪交易发生日期的数据库,以及交易所对应的独特买家 - 现在我正在尝试查看导致客户在以后再次购买的预订。现在,下面的代码和示例输出显示了我们哪些客户是其buyer_id计数的重复客户,但我还希望能够看到哪些购买(预订)导致同一客户稍后再次购买(没有更早的时候,通过使用简单的" Count")可能就是这种情况。

SELECT r.id AS Reservation_id, r.created, r.buyer_id, COUNT(r.buyer_id)
FROM reservations r
GROUP BY r.buyer_id
ORDER BY Reservation_id


 Reservation_id   created             buyer_id     COUNT(r.buyer_id)
 3                2007-08-14 18:28:38   438           1
 7                2007-09-19 12:29:52   474           2
 8                2007-09-19 13:14:54   476           1
 9                2007-09-20 10:22:52   477           1
 10               2007-09-25 15:27:45   485           3
 11               2007-09-26 20:56:25   474           2
 12 .... etc

目标是能够提取有关每个预订的其他数据,然后查看哪些服务因素对重新购买的客户产生影响。在上面的情况下,买家#474购买了两次,但我希望能够区分第一次购买(当他/她确实再次购买时,第二次和最后一次购买)从第二次购买(之后没有其他购买)购买是由买方#474)完成的。在这种情况下,目标是使另一个输出行显示:

Reservation_id   created             buyer_id    COUNT(r.buyer_id) Returning
 3                2007-08-14 18:28:38   438           1              0
 7                2007-09-19 12:29:52   474           2              1
 8                2007-09-19 13:14:54   476           1              0
 9                2007-09-20 10:22:52   477           1              0
 10               2007-09-25 15:27:45   485           3              1
 11               2007-09-26 20:56:25   474           2              0
 12 .... etc

即显示客户474的ID如何在reservations_id 11之后不再出现。我会在excel中执行此操作,但是我有大量的行,而且excel无法处理这样的功能大数据集。

感谢任何帮助或建议。

1 个答案:

答案 0 :(得分:0)

评论太长了。

您要做的是称为循环事件分析。特别是,它是统计/数据挖掘分支的一部分,称为“生存分析”。

你的方法(在SQL中完全可能)会导致偏见的结果和有偏见的结论,原因很简单,很久以前第一次购买的人比昨天第一次购买的人有更大的回报机会。

我对问题的回答几乎从未读过我的一本书。但是,“使用SQL和Excel进行数据分析”一书有两章关于生存分析。从实际角度来看,这些可以帮助您理解这些时间到事件的问题。