是否可以查看两个连续的行并使用SQL确定两者之间的时间差?

时间:2019-06-28 17:09:14

标签: sql amazon-redshift

我对SQL比较陌生,所以请多多包涵!我试图查看休眠两年后有多少客户进行购买。相关字段包括sudo bundle installcust_id(同一purchase_date可能有多个观测值,但日期不同。)我的SQL脚本使用Redshift。

我意识到我无法为cust_id参数添加相同的内容(这没有任何意义),但是我不确定还有什么要做。

DATEDIFF

1 个答案:

答案 0 :(得分:0)

我认为您想要lag()。要获取相关票证:

SELECT t.*
FROM (SELECT t.*,
             LAG(purchase_date) OVER (PARTITION BY cust_id ORDER BY purchase_date) as prev_pd
      FROM tickets t
     ) t
WHERE prev_pd < purchase_date - interval '2 year';

如果要个客户的数量,请使用count(distinct)

SELECT COUNT(DISTINCT cust_id)
FROM (SELECT t.*,
             LAG(purchase_date) OVER (PARTITION BY cust_id ORDER BY purchase_date) as prev_pd
      FROM tickets t
     ) t
WHERE prev_pd < purchase_date - interval '2 year';

请注意,它们不使用DATEDIFF()。这将计算两个日期值之间的边界的数量。因此,2018-12-31和2019-01-01相差1年。