题解 | #零食类商品中复购率top3高的商品#
零食类商品中复购率top3高的商品
https://www.nowcoder.com/practice/9c175775e7ad4d9da41602d588c5caf3
本题理解题意,按照题目的意思一步一步书写sql即可。
1.关联三张表个,选出需要的字段,并选出‘零食’标签的记录。
2. 计算每一种零食中,每一个用户近90天的购买数。
3. 计算每一种商品的复购率,并选出top3.
WITH tmp1 AS( # 关联三张表个,选出需要的字段,并选出‘零食’标签的记录 SELECT t1.product_id, t3.uid, t3.event_time, MAX(t3.event_time) OVER() max_time FROM tb_product_info t1 JOIN tb_order_detail t2 ON t1.product_id = t2.product_id JOIN tb_order_overall t3 ON t2.order_id = t3.order_id WHERE t1.tag = '零食' ), tmp2 AS( # 计算每一种零食中,每一个用户近90天的购买数 SELECT product_id,uid,COUNT(event_time) buy_cnt FROM tmp1 WHERE DATEDIFF(max_time,event_time) < 90 GROUP BY product_id,uid ) # 计算每一种商品的复购率,并选出top3 SELECT product_id,ROUND(SUM(IF(buy_cnt >= 2,1,0)) / COUNT(DISTINCT uid),3) repurchase_rate FROM tmp2 GROUP BY product_id ORDER BY repurchase_rate DESC LIMIT 0,3;

