#复购率top3高
#复购率保留3位小数,近90天内购买它至少两次的人数 ÷ 购买它的总人数
#复购率倒序、商品ID升序排序
select
    product_id,
    round(avg(cnt>1),3) as repurchase_rate 
from (
    select 
    product_id,
    uid,
    count(event_time) as cnt
    from tb_product_info join tb_order_detail using(product_id)
        join tb_order_overall using(order_id)
    where tag ='零食' and status = 1 #零食类商品 
    and datediff(date((select max(event_time) from tb_order_overall)),event_time)<90 #近90天内购买
    group by uid,product_id
) t
group by product_id 
order by repurchase_rate desc,product_id 
limit 3

先找出每一个商品,每人的购买次数。

avg(cnt>1) 是求,判定,购买次数大于1为1,否则为0 ,平均就是复购率了。