我正在尝试创建一个MySQL查询,当一个人VisitorID在30天之内DateOfService返回时,该查询将返回所有行。理想情况下,我希望查询返回所有字段,但是该示例具有使查询正常工作的相关字段。

表样本

VisitorID DateOfService Cost   TransactionID
001       2008-08-15    150.00 11-235-24
001       2008-09-07    175.00 11-272-50
002       2008-08-15    155.00 11-688-14
002       2008-09-16    181.00 11-841-67
001       2011-01-07    190.00 12-851-41
001       2011-01-18    100.00 12-901-55
003       2011-02-05    150.00 12-951-14
003       2011-02-15    180.00 12-998-51


理想的查询结果

VisitorID DateOfService Cost   TransactionID
001       2008-09-07    175.00 11-272-50
001       2011-01-18    100.00 12-901-55
003       2011-02-15    180.00 12-998-51


我曾尝试使用分组依据进行变体形式,但似乎无法在30天的滚动窗口中做到这一点。

最佳答案

SELECT t1.*
FROM table t1
INNER JOIN table t2
  ON t1.VisitorID = t2.VisitorID AND
     t1.TransactionID != t2.TransactionID AND
     t1.DateOfService > t2.DateOfService AND
     datediff(t1.DateOfService, t2.DateOfService) < 30


demo on sqlfiddle

关于mysql - 查找历史数据在30天内再次访问的用户的记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34294220/

10-16 15:26