赞
踩
现有页面浏览记录表(page_view_events)如下,表中有每个用户的每次页面访问记录。
规定若同一用户的相邻两次访问记录时间间隔小于60s,则认为两次浏览记录属于同一会话。现有如下需求,为属于同一会话的访问记录增加一个相同的会话id字段,会话id格式为"user_id-number",其中number从1开始,用于区分同一用户的不同会话,期望结果如下:
SELECT user_id, page_id, view_timestamp, concat(user_id,"-",flag) session_id from( SELECT user_id, page_id, view_timestamp, sum(flag) over(PARTITION by user_id ORDER by view_timestamp) flag from( SELECT user_id, page_id, view_timestamp, --打标签,本次page的时间戳减去上个页面的时间戳,如果大于60秒,证明本次page是会话的初始page,打上一个1的标签 IF(view_timestamp-last_view_timestamp>60,1,0) flag from( SELECT user_id, page_id, view_timestamp, --取出上一个page页面的时间戳 lag(view_timestamp,1,0) over(PARTITION by user_id order by view_timestamp ) last_view_timestamp FROM page_view_events )t1 )t2 )t3
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。