一.每个店铺top3(分组求topN)
题目:有50w个京东店铺,每个顾客访问任何一个店铺的任何一个商品时,都会产生一条访问日志,访问日志存储的表名为visit,访客用户id为user_id,被访问的店铺名称为shop。
数据部分内容如下:
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 a
u2 a
u2 a
u3 a
u5 a
需求:
1.每个店铺UV(访客数)去重
select shop, count( dsitinct user_id) from visit group by shop
2.每个店铺访问次数top3的访客信息。输出店铺名、访客id、访问次数。
思路:先求出每个店铺每个人的访问量做表1->在对这个每个人访问量的表1进行排名,求出每个店铺每个人的访问量的排名做表2->在对表2的基础继续查询,筛选出前三名即可。
第一步骤:求出每个店铺每个人的访问量做t1表
select shop, user_id, count(*) ct from visit group by sh