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

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

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

WITH 
date_range AS (
    SELECT 
        DATE_SUB(DATE(MAX(event_time)), INTERVAL 89 DAY) AS start_date,
        DATE(MAX(event_time)) AS end_date
    FROM tb_order_overall
    WHERE status = 1  -- 只统计已付款订单
),

product_purchases AS (
    SELECT
        d.product_id,
        o.uid,
        COUNT(*) AS purchase_count
    FROM tb_order_detail d
    JOIN tb_order_overall o ON d.order_id = o.order_id
    JOIN tb_product_info p ON d.product_id = p.product_id
    WHERE 
        p.tag = '零食'
        AND o.status = 1  -- 已付款订单
        AND DATE(o.event_time) BETWEEN (SELECT start_date FROM date_range) 
                                   AND (SELECT end_date FROM date_range)
    GROUP BY d.product_id, o.uid
)

SELECT
    product_id,
    ROUND(
        SUM(CASE WHEN purchase_count >= 2 THEN 1 ELSE 0 END) / 
        COUNT(DISTINCT uid),  -- 去重计算总人数
        3
    ) AS repurchase_rate
FROM product_purchases
GROUP BY product_id
ORDER BY 
    repurchase_rate DESC,
    product_id
LIMIT 3;



全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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