题解 | #牛客的课程订单分析(五)#

牛客的课程订单分析(五)

https://www.nowcoder.com/practice/348afda488554ceb922efd2f3effc427

WITH qualified AS(
    SELECT user_id, SUM(IF(status='completed', 1, 0)) AS cnt
    FROM order_info
    WHERE (product_name = 'C++'
    OR product_name = 'Java'
    OR product_name = 'Python')
    AND date > '2025-10-15'
    GROUP BY user_id, status
    HAVING cnt >= 2
),
buy_date AS(
    SELECT user_id, o.date, DENSE_RANK() OVER(
        PARTITION BY o.user_id
        ORDER BY o.date
    ) AS date_rank
    FROM order_info AS o
    WHERE status = 'completed'
    AND (product_name = 'C++'
    OR product_name = 'Java'
    OR product_name = 'Python')
    AND date > '2025-10-15'
),
buy_first_date AS(
    SELECT b.user_id, b.date AS first_buy_date
    FROM buy_date AS b
    WHERE date_rank = 1
    AND date > '2025-10-15'
),

buy_second_date AS(
    SELECT b.user_id, b.date AS second_buy_date
    FROM buy_date AS b
    WHERE date_rank = 2
    AND date > '2025-10-15'
)

SELECT q.user_id, bf.first_buy_date, bs.second_buy_date, q.cnt
FROM qualified AS q
INNER JOIN buy_first_date AS bf
ON q.user_id = bf.user_id
INNER JOIN buy_second_date AS bs
ON q.user_id = bs.user_id
ORDER BY q.user_id ASC;

全部评论

相关推荐

大摆哥:刚好要做个聊天软件,直接让你帮他干活了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务