# 一步到位 SELECT DISTINCT pi.product_id, ROUND(AVG(IF(COUNT(*)>1, 1,0)) OVER(PARTITION BY pi.product_id),3) repurchase_rate FROM tb_product_info pi INNER JOIN tb_order_detail od USING(product_id) INNER JOIN tb_order_overall oo USING(order_id) WHERE DATEDIFF((SELECT MAX(DATE(event_time)) FROM tb_order_overall), DATE(event_time)) < 90 AND tag = '零食' GROUP BY pi.product_id,uid ORDER BY repurchase_rate DESC, pi.product_id LIMIT 3