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

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

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

解题思路:首先对日期进行排序,其次判断连续日期,并查询统计连续天数>=2的用户即可。

判断连续日期的方法:

1、对日期去重后进行排序(或者直接用dense_rank进行排序);

2、日期减去排序对应序号的天数如果是一个相同的值,则说明这些日期就是连续的。

3、对连续的日期再次排序就得到了最大的连续数列。

with
    t2 as (
        select
            user_id,
            sales_date,
            sales_date - row_number() over (
                partition by
                    user_id
                order by
                    sales_date
            ) as group_diff
        from
            (
                select
                    user_id,
                    sales_date,
                    count(1) as cnt
                from
                    sales_tb
                group by
                    user_id,
                    sales_date
            ) t1
    )
select
    user_id,
    days_count
from
    (
        select
            user_id,
            group_diff,
            count(sales_date) as days_count
        from
            t2
        group by
            user_id,
            group_diff
        having
            count(sales_date) >= 2
    ) t3
order by
    user_id
SQL大厂面试题 文章被收录于专栏

牛客网sql大厂面试题题解~

全部评论

相关推荐

辅助位:定时器项目都被用烂了,感觉
点赞 评论 收藏
分享
09-29 00:03
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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