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

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

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

# 连续2天及以上在该店铺购物的用户及其对应的次数(若有多个用户,按user_id升序排序)

# 连续几天,等差数列(按照日期排序,日期-排名=首次日期)

with t as(

# 每个用户行为日期,distinct去重当天重复行为,按用户分组按日期排序

select distinct user_id

    ,sales_date

    ,dense_rank()over(partition by user_id order by sales_date ) rk

from sales_tb)

,t1 as(

# 连续登录的日期-排名=初始日期,

# 因此按照用户和初始日期分组,按照行为日期重新dense_rank,可得每个用户每个初始日期下,行为日期排名情况

select user_id

    ,date_sub(sales_date,interval rk day) as fir_dt

    ,dense_rank()over(partition by user_id,date_sub(sales_date,interval rk day) order by sales_date) days_count

from t

# 按照行为日期重新dense_rank,可得每个用户每个初始日期下,行为日期排名情况,其中max就是最大连续登录日期

select user_id,days_count)

from t1

group by  user_id

having max(days_count)>1

####################################################

汇总如下

select user_id,max(days_count)

from (

select user_id

    ,dense_rank()over(partition by user_id,date_sub(dt,interval rk day) order by dt) as days_count

from (

    select  distinct sales_date dt

        ,user_id

        ,dense_rank()over(partition by user_id order by sales_date) as rk

    from sales_tb )t

)t1

group by user_id

having max(days_count)>1

全部评论

相关推荐

02-04 17:01
南昌大学 Java
牛客96763241...:拿插件直接投就完了,这玩意看运气的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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