请教SQL笔试题目

计算每个页面被各个用户访问的平均次序,举例说明:小明依次访问了A、C、A、A、C、B页面,则首次访问次序为A、C、B,各页面首次访问次序为A:1,B:3,C:2。用户每日访问日志表events,有字段data_date,user_id,page_name,ts,返回page_name,avg_rn#笔试题目#
全部评论
先针对user_id 和pagename 取最小的ts 然后按照user_id pagename 分区使用rank对min ts进行排序rnk 然后select pagename, avg(rnk) from上面的表 group by pagename
点赞 回复
分享
发布于 2019-08-19 23:56
没太懂题目意思,各页面首次访问次序是什么意思?
点赞 回复
分享
发布于 2019-08-19 21:36
联易融
校招火热招聘中
官网直投
哈哈哈哈     流利说
点赞 回复
分享
发布于 2019-08-19 21:37
set @cixu:=0;set @lastpage:="";selectpagename,avg(rank) as avg_rnfrom(selectuid,pagename,case when @lastpage != pagrname and @id =uid then @cixu := @cixu 1 when  @lastpage = pagename and @id =uid then @cixu:=@cixuelse @cixu:=0 end as rank,@lastpage := pagename(select distinct uid,pagenamefrom tsorder by uid,date )a)bgroup by pagename;
点赞 回复
分享
发布于 2019-08-19 21:57
流利说的吧,我也做了,没写出来😅
点赞 回复
分享
发布于 2019-08-19 22:12
没做出来。。。
点赞 回复
分享
发布于 2019-08-20 08:36
select  page_name,avg(rnk) as avg_rnk from ( select  user_id, page_name,  rank()over(partition by user_id,page_name order by min(ts)) as rnk from  ( select  user_id, page_name, min(ts) as min_ts from events group by user_id,page_name )tmp1 group by user_id,page_name )tmp2 group by page_name
点赞 回复
分享
发布于 2019-08-20 10:53

相关推荐

点赞 14 评论
分享
牛客网
牛客企业服务