只需找到两个小时访问某个页面的客户并返回这些用户。
表格列将类似于客户ID,页面名称和列表。日期。虽然我能够找到不止一次访问过某个页面名称的ID以及访问过的日期,但我无法将两个小时的滚动时间应用于唯一的ID。
有什么建议吗?
答案 0 :(得分:4)
您需要检查上一行的时间戳并将其与当前时间戳进行比较,如下所示:
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
答案 1 :(得分:0)
尝试这样的事情
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;
这将为您提供每个customerid和页面名称日期的每个事件之间的增量,使用此逻辑将使您获得正确的方向。没有任何代码或数据示例,很难推测。