with t1 as( select uid,product_id,count(*) as cnt FROM tb_order_detail JOIN tb_order_overall USING(order_id) JOIN tb_product_info USING(product_id) where tag = '零食' and date(event_time) >= date_sub( (select max(date(event_time)) from tb_order_overall ),interval 89 day) and status =1 group by uid,product_id ) select product_id, round(sum(cnt>=2)/count(*),3) as repurchase_rate from t1 group by product_id order by repurchase_rate desc,product_id limit 3
sum(cnt>=2)补药再用count算逻辑表达了