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

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

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

步骤

1、连接3张表

2、筛选90天内的订单

3、ROW_NUMBER() over(PARTITION BY df2.product_id,df1.uid order by df1.event_time asc) as "rk"

查出购买每个产品的用户 当前订单是第几次购买

4、round(count(distinct case when rk >=2 then uid end)/count(distinct uid),3) as "复购率"

group by product_id

购买次数>=2的用户数 / 购买过的用户数 按产品id分组

SELECT 
product_id,
#count(distinct uid) as "购买的人数",
#count(distinct case when rk >=2 then uid end) as "购买2次以上的人数",
round(count(distinct case when rk >=2 then uid end)/count(distinct uid),3) as "复购率"
from (
        select
        df1.uid,
        df2.product_id,
        ROW_NUMBER() over(PARTITION BY df2.product_id,df1.uid order by df1.event_time asc) as "rk"
        from tb_order_overall as df1
        left join (
                select
                df1.*,
                df2.tag
                from tb_order_detail as df1
                left join tb_product_info as df2
                on df1.product_id = df2.product_id
        ) as df2
        on df1.order_id = df2.order_id
        where df2.tag = '零食'
        and df1.event_time >= (select date_add(max(event_time), interval -89 day) from tb_order_overall)
) as a
group by product_id
order by 复购率 desc,product_id asc
limit 3

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-27 20:15
还能挽救吗?找同学帮忙看了一下 字节怎么能如此对我
牛客26396789...:你这是严重红线,被发现你自己永远进不去,你那个同学直接走人,你还敢宣扬
点赞 评论 收藏
分享
点赞 评论 收藏
分享
06-08 22:25
门头沟学院 Java
从零开始的转码生活:这hr不会打开手机不分青红皂白给所有人群发这句话,过一会再给所有人再发一遍,这肯定会有重复的,不管,再过一会再发一遍
点赞 评论 收藏
分享
06-14 19:09
门头沟学院 Java
darius_:给制造业搞的,什么物料管理生产管理,设备管理点检,最最关键的就是一堆报表看板。个人觉得没啥技术含量都是些基本的crud,但是业务很繁琐那种
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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