比较通俗易懂的解法#case when,不用表连接

每天的日活数及新用户占比

http://www.nowcoder.com/practice/dbbc9b03794a48f6b34f1131b1a903eb

select dt,count(dt) dau,round(sum(judge)/count(dt),2) uv_new_ratio
from
    (select uid,in_time dt,
    case when (uid,in_time) in 
        (select uid,date(min(in_time)) from tb_user_log group by uid) #所有用户最早活跃时间
         then 1 else 0 end judge 
         #表示:如果等于最早活跃时间,则赋值1,否则赋值0,用于体现新用户。
    from 
         (select uid,date(in_time) in_time from tb_user_log
         union #如果进入时间离开时间跨天了,在两天里都记为该用户活跃过.利用union去重
         select uid,date(out_time) in_time from tb_user_log
          ) AS new
    ) AS n
group by dt
order by dt
全部评论

相关推荐

昨天 13:43
门头沟学院 Java
投递美团等公司10个岗位
点赞 评论 收藏
分享
05-29 09:02
门头沟学院 Java
点赞 评论 收藏
分享
机械打工仔:有说的你怀疑一下就行了,直接问也太实诚了
点赞 评论 收藏
分享
07-23 11:23
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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