题解 | 某宝店铺连续2天及以上购物的用户及其对应的天数

某宝店铺连续2天及以上购物的用户及其对应的天数

https://www.nowcoder.com/practice/63ac3be0e4b44cce8dd2619d2236c3bf

-- 连续2天及以上在该店铺购物的用户及其对应的次数
-- 连续购物的天数_连续天数的计算方法
-- 筛选出两天的
select
user_id,
consecutive_days
from(
    SELECT 
    user_id,
    COUNT(group_date) AS consecutive_days
    FROM(
        SELECT 
        user_id,
        sales_date,
        DATE_SUB(sales_date, INTERVAL xuhao DAY) AS group_date
        FROM(
            select
            user_id,
            sales_date,
            row_number()over(partition by user_id order     by      sales_date) as xuhao
            from(
                select
                distinct user_id,
                sales_date
                from sales_tb) as t1) as t2 )as t3
    group by user_id) as t4
where consecutive_days>=2


这个方法实际上比较传统,就是时间扫描法,主要的做法是新建连续不挑次的序号,将序号和时间相减,最后分组统计相同的时间值就可以看到不同连续时长的分布长度。

可以参考下面的模板:

WITH 
-- 第一步:获取每个作者的回答日期(去重)
distinct_dates AS (
    SELECT DISTINCT author_id, answer_date
    FROM answer_tb
),

-- 第二步:为每个作者的回答日期排序并添加序号
ranked_dates AS (
    SELECT 
        author_id,
        answer_date,
        ROW_NUMBER() OVER (PARTITION BY author_id ORDER BY answer_date) AS row_num
    FROM distinct_dates
),

-- 第三步:计算日期减去序号(关键步骤)
date_groups AS (
    SELECT 
        author_id,
        answer_date,
        DATE_SUB(answer_date, INTERVAL row_num DAY) AS group_date
    FROM ranked_dates
),

-- 第四步:统计每个连续分组的长度
consecutive_counts AS (
    SELECT 
        author_id,
        group_date,
        COUNT(*) AS consecutive_days
    FROM date_groups
    GROUP BY author_id, group_date
),

-- 第五步:找出每个作者的最大连续天数
max_consecutive AS (
    SELECT 
        author_id,
        MAX(consecutive_days) AS max_days
    FROM consecutive_counts
    GROUP BY author_id
    HAVING MAX(consecutive_days) >= 3
)

-- 最终结果:关联作者信息表
SELECT 
    m.author_id,
    a.author_level,
    m.max_days AS days_cnt
FROM max_consecutive m
JOIN author_tb a ON m.author_id = a.author_id
ORDER BY m.author_id;

全部评论

相关推荐

04-08 13:31
已编辑
门头沟学院 前端工程师
D0cC:京东营收1万多亿人民币,阿里9000多亿,虽然他俩利润都没腾讯和字节多,但是很恐怖了啊,负担了多少打工人的薪水
投递拼多多集团-PDD等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务