题解 | #每天的日活数及新用户占比#

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

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

1.首先因为隔夜在线算两天的活跃,所以union要将in_time和out_time合并成一列

2.按照每个用户分组然后以dt为正序安排一个序号,该用户秩序为1的那一天即是他成为新用户的那一天

3.计算每日活跃度人数时一个人不能重复算,因此要 distinct uid,新用户就是把该日秩序为1的那些用户进行统计

SELECT dt,count(DISTINCT uid) dau,
    ROUND(sum(if(act_rank=1,1,0))/count(DISTINCT uid),2)
FROM
    (
    SELECT uid,dt,
    DENSE_RANK()over(partition by uid order by dt) act_rank
    FROM
        (
        SELECT uid,date(in_time) dt
        FROM tb_user_log
        UNION
        SELECT uid,date(out_time) dt
        FROM tb_user_log
        )t1
    )t2
GROUP BY dt
ORDER BY dt;
全部评论

相关推荐

吴offer选手:我卡在笔试才是最好笑的,甚至没给我发过笔试链接
投递哔哩哔哩等公司8个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务