题解 | #牛客每个人最近的登录日期(五)#

牛客每个人最近的登录日期(五)

https://www.nowcoder.com/practice/ea0c56cd700344b590182aad03cc61b8

with new as (
    select user_id,min(date) nu
    from login
    group by user_id--找出新用户
), jg as (
select new.nu,lo.user_id,lo.client_id,lo.date da,datediff(lo.date,new.nu) df--输出时间间隔,这里0表示用户当天登录的日期行,1为次日登录的日期行,以此类推。。。。
,sum(if(datediff(lo.date,new.nu)=1,1,0))over(partition by user_id) dt--这里比较重要,在同一行输出一个值,1代表用户在次日登录了,0代表用户在次日未曾登录,将这个值放在时间间隔之后
from new join login lo on new.user_id=lo.user_id--将新用户表与原表内连接
)
select jg.da,round(if(sum(If(jg.df=0,1,0))=0,0.000,sum(if(jg.dt=1 and jg.df=0,1,0))/sum(If(jg.df=0,1,0))),3)--这里df=0表示要找到这个日期里是新用户的,df=0 and dt=1表示要找到这个日期的新用户是次日也登录过的
from jg
group by jg.da
order by jg.da;
全部评论

相关推荐

SaviorSu:直接说下学期可以请假,一般情况学校允许我26届,大三就直接去实习了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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