题解 | #零食类商品中复购率top3高的商品#

零食类商品中复购率top3高的商品

https://www.nowcoder.com/practice/9c175775e7ad4d9da41602d588c5caf3

#需求:统计零食类商品中复购率top3高的商品
#输出:商品ID、复购率
#要求:tag为零食;复购率保留3为小数,倒序,商品ID升序输出;只输出复购率前三的商品信息
#复购率=近90天内有至少两次购买的人数/有购买的总人数;近90天指包含当天在内的90天
#拆分问题:
#1、要用到的数据:product_id、tag、uid、event_time,表链接
#2、近90天内:event_time>=date_sub(max(event_time),interval 89 day)
#3、是否为复购:if(count(event_time)>1,1,0) 加上聚合过商品和用户,得到的是每个用户对每个商品的行为记录,如果count>1,则表明他对该商品有多次记录,即有复购行为
select product_id,round(sum(w1)/count(uid),3) repurchase_rate
from(
  select uid,product_id,if(count(event_time)>1,1,0) w1
  from tb_order_detail
  join tb_product_info using(product_id)
  join tb_order_overall using(order_id)
  where tag="零食"
  and event_time>=(select date_sub(max(event_time),interval 89 day) from tb_order_overall)
  #这里条件中加了一层select,在于需求中要的是近90天内,需要从所有日期中筛选得出;如果直接where条件,则会带有前面对tag的筛选而不准确
  group by uid,product_id
) e1
group by 1
order by 2 desc,1
limit 3

全部评论

相关推荐

酷酷的喜马拉雅山:感觉这比一直在初筛不动的好多了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务