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

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

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

先拉宽表找出每个人,每商品下单次数 记得过滤条件

select
    pi.product_id,
    oo.uid,
    count(1) cnt
from tb_order_overall oo left join tb_order_detail od
on oo.order_id=od.order_id
left join tb_product_info pi on od.product_id = pi.product_id
where status=1 and event_time>(
    SELECT DATE_SUB(MAX(event_time), INTERVAL 89 DAY)
        FROM tb_order_overall
    )
and tag='零食'
group by pi.product_id,oo.uid

下单次数>2,即为复购的

总人数直接分组内count,因为子查询中已经group by了,所以此时不用distinct

然后按照题目要求的精度给round()

按招题目要求的顺序来

select
    product_id,
    round(sum(if(cnt>1,1,0))/count(uid),3) repurchase_rate
from (
    select
        pi.product_id,
        oo.uid,
        count(1) cnt
    from tb_order_overall oo left join tb_order_detail od
    on oo.order_id=od.order_id
    left join tb_product_info pi on od.product_id = pi.product_id
    where status=1 and event_time>(
        SELECT DATE_SUB(MAX(event_time), INTERVAL 89 DAY)
            FROM tb_order_overall
        )
    and tag='零食'
    group by pi.product_id,oo.uid
)t1
group by product_id
order by repurchase_rate desc ,product_id ;

每日一练,做完总结!

感觉我写的很浪费性能,有没有大佬能帮我优化一下,感谢了!

全部评论

相关推荐

抱抱碍事梨a:三点建议,第一点是建议再做一个项目,把自我介绍部分顶了,第二点是中南大学加黑加粗,第三点是建议加v详细交流
点赞 评论 收藏
分享
04-18 15:58
已编辑
门头沟学院 设计
kaoyu:这一看就不是计算机的,怎么还有个排斥洗碗?
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务