遇到灾难网站变灰怎么做,寿光做网站m0536,如何上传织梦做的网站,沈阳淘宝网站建设用户行为分析
业务背景
某购物APP最近上线了一个新功能#xff0c;用户签到后可以跳转到大转盘抽奖#xff0c;抽奖获得的奖金可以抵消购物的费用#xff0c;以此来培养用户使用app的习惯。 数据表介绍
现有一张用户行为表action_log#xff0c;主要字段如下#xff0c…
用户行为分析
业务背景
某购物APP最近上线了一个新功能用户签到后可以跳转到大转盘抽奖抽奖获得的奖金可以抵消购物的费用以此来培养用户使用app的习惯。 数据表介绍
现有一张用户行为表action_log主要字段如下记录了用户在app上的所有行为日志即何人userid在何时action_time进行了什么操作action_name。 select 10001 userid ,2023-08-01 00:32:33 action_time , sign action_name into #action_log union all select 10001 userid ,2023-08-01 00:32:38 action_time , lottery action_name union all select 10001 userid ,2023-08-01 00:32:10 action_time , login action_name union all select 10001 userid ,2023-08-01 01:20:12 action_time , logout action_name union all select 10002 userid ,2023-08-01 15:32:33 action_time , sign action_name union all select 10002 userid ,2023-08-01 15:32:38 action_time , lottery action_name union all select 10002 userid ,2023-08-01 15:32:10 action_time , login action_name union all select 10002 userid ,2023-08-01 15:20:12 action_time , logout action_name union all select 10002 userid ,2023-08-01 15:32:35 action_time , gift action_name select * from #action_log 需求
统计每天签到之后并进行抽奖的用户数注意签到和抽奖行为必须相邻签到和抽奖行为对应的event_id分别为sign,lottery。 思路 统计用户数时添加了限制签到之后要大转盘抽奖两个行为一前一后必须相邻才可以。这个时候我们可以用窗口函数的位移函数lead() over()实现lead可以取当前记录的下一条记录如果我们对每个用户userid分组按照行为时间action_time升序排列就可以得到一个用户的连续的行为记录再用lead() 就可以得到下一条记录从而在当前记录中得到下一条记录对两个连续行为进行筛选就可以计算满足这个条件的用户数。
代码 select convert(varchar(10),action_time,120) day, count(distinct userid) users from ( select *,lead (action_name,1) over(partition by userid order by action_time ) next_aciton from #action_log )t where action_name sign and next_aciton lottery group by convert(varchar(10),action_time,120) 细节点注意这种查询方式可查询出两个连续动作跨天的用户用户被统计在了第一个动作即签到 “sign”所属的日期中
lead() over 必须在sqlserver 2012版及以上执行