0
只需查找以两个小时访问特定页面的客户并返回这些用户即可。重复访问的SQL时间范围
表格列将类似客户ID,页面名称&日期。尽管我能够找到不止一次访问特定页面名称的ID以及访问日期,但我无法将滚动两小时的时间段应用于唯一ID。
有什么建议吗?
只需查找以两个小时访问特定页面的客户并返回这些用户即可。重复访问的SQL时间范围
表格列将类似客户ID,页面名称&日期。尽管我能够找到不止一次访问特定页面名称的ID以及访问日期,但我无法将滚动两小时的时间段应用于唯一ID。
有什么建议吗?
尝试这样的事情
WITH ROW AS
(
SELECT *
, ROW_NUMBER() OVER (ORDER BY customerid, [page name], date) AS RN
FROM #YOURTABLE
)
SELECT DISTINCT R1.customerid, R1.[page name], R1.date
, (1.0*datediff(second, r1.date, r2.date)/(3600)) [delta (hrs)]
FROM ROW R1
JOIN ROW R2
ON ( R1.RN = R2.RN - 1
and r1.customerid = r2.customerid
AND R1.[page name]= R2.[page name]
)
order by customerid, [page name], DATE;
这会给你每客户ID和页面名称日期各事件之间的增量,用这个逻辑将让你在正确的方向。没有任何代码或数据的例子很难推测。
你需要检查前一行的时间戳,并将其与当前的,就像这样:
SELECT DISTINCT custid
...
QUALIFY
MAX(ts_col) -- previous timestamp
OVER (PARTITION BY custid -- for each customer
ORDER BY ts_col
ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING)
+ INTERVAL '2' HOUR > ts_col