我有一个事件'表,其中包含该会话中的页面ID和事件编号作为列。我怎么能得到否。访问会话中的页面? 例如,考虑下面的数据没有。对p1的访问量应为2,对于p2,访问量应为1。
page_id event_number
p1 1
p1 2
p1 3
p2 4
p2 5
p2 6
p1 7
p1 8
p1 9
答案 0 :(得分:0)
将查询用作:
Select Page_Id, Count(event_number) as Visits Group by Page_ID
答案 1 :(得分:0)
SELECT a.*,
CASE
WHEN a.page_id <> b.page_id
OR b.page_id IS NULL THEN 1
ELSE 0
END AS ind,
Sum(ind)
OVER (
partition BY a.page_id
ORDER BY a.seq_num) AS val
FROM testing_visits a
LEFT JOIN testing_visits b
ON a.seq_num + 1 = b.seq_num;
致我朋友SreeRam Srinivasan的信用。
答案 2 :(得分:0)
这是否回答:
9*9
答案 3 :(得分:0)
这会将预期结果作为聚合返回:
SELECT page_id, COUNT(*)
FROM
(
SELECT page_id,
CASE -- return 1 whenever there accessed page changes
WHEN page_id =
MIN(page_id)
OVER (ORDER BY event_number
ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING)
THEN 0
ELSE 1
END AS flag
FROM tab
QUALIFY flag = 1 -- only return the
) AS dt
GROUP BY 1
如果您想保留详细信息行,只需切换到SUM(flag) OVER (PARTITION BY page_id)
而不是COUNT
,然后移除QUALIFY
。