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

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

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

 #用union查找每日的用户活跃记录(因为题目里说"跨天算两条记录")
#找出每个用户的首次活跃日期
#连接表准备查询每日新增和新增占比
#算
with
    t1 as (
        select
            uid,
            date(in_time) as tm
        from
            tb_user_log
        union
        select
            uid,
            date(out_time) as tm
        from
            tb_user_log
    ),
    t2 as (
        select
            uid,
            tm,
            rank() over (
                partition by
                    uid
                order by
                    tm
            ) rk
        from
            t1
    ),
    t3 as (
        select
            uid,
            tm first_tm
        from
            t2
        where
            rk = 1
    ),
    t4 as (
        select
            t1.uid,
            t1.tm,
            t3.first_tm
        from
            t1
            join t3 using (uid)
    )
select
    tm,
    count(*) dau,
    round(
        sum(
            case
                when tm = first_tm then 1
                else 0
            end
        ) / count(*),
        2
    ) as uv_new_ratio
from
    t4
group by
    tm
order by
    tm

全部评论

相关推荐

牛客吹哨人:哨哥晚点统一更新到黑名单:能救一个是一个!26届毁意向毁约裁员黑名单https://www.nowcoder.com/discuss/1525833
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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