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