第3题
有50W个京东店铺,每个顾客访客访问任何一个店铺的任何一个商品时都会产生一条访问日志,访问日志存储的表名为Visit,访客的用户id为user_id,被访问的店铺名称为shop,请统计:
1)每个店铺的UV(访客数)
2)每个店铺访问次数top3的访客信息。输出店铺名称、访客id、访问次数
数据集
u1 a u2 b u1 b u1 a u3 c u4 b u1 a u2 c u5 b u4 b u6 c u2 c u1 b u2 a u2 a u3 a u5 a u5 a u5 a
1) 建表
create table visit( user_id varchar(10), shop varchar(20) )
2) 每个店铺的UV(访客数)
分析: 需求是访客数,相同的访客应该进行去重,求店铺的访客数应该是按照店铺进行分组 select shop,count(distinct user_id) from visit group by shop;
3) 每个店铺访问次数top3的访客信息。输出店铺名称、访客id、访问次数
分析: 1.求每个店铺被每个用户的访问次数 select shop,user_id,count(*) ct from visit group by shop,user_id;t1 2.计算每个店铺被用户访问次数排名 select shop,user_id,ct,rank() over