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

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

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

-- 思路:

-- 1.构造用户活跃表:跨天数据,算作两条活跃记录

-- 在拿到用户活跃日期和最早活跃日期即可区分新旧用户

-- 2. 按日期分组统计dau和新用户占比

-- 新用户判断逻辑:if(dt=first_dt,1, 0)

-- 思路:
--      1.构造用户活跃表:跨天数据,算作两条活跃记录
--          在拿到用户活跃日期和最早活跃日期即可区分新旧用户
--      2. 按日期分组统计dau和新用户占比
--          新用户判断逻辑:if(dt=first_dt,1, 0)
with  t_active as(
-- 1.构造用户活跃表:跨天数据,算作两条活跃记录
--      在拿到用户活跃日期和最早活跃日期即可区分新旧用户
select 
    uid, 
    date(in_time) as dt,
    date(min(in_time) over(partition by uid)) as first_dt
from tb_user_log
union -- 为防止出现跨天数据,需要根据in_time和out_time union合并去重一下
select 
    uid, 
    date(out_time) as dt,
    date(min(in_time) over(partition by uid)) as first_dt
from tb_user_log
)

-- 2. 按日期分组统计dau和新用户占比
--  新用户判断逻辑:if(dt=first_dt,1, 0)
select 
    dt,
    count(distinct uid) dau,
    round(sum(if(dt=first_dt,1, 0)) / count(distinct uid), 2) as uv_new_ratio
from t_active
group by dt 
order by dt
SQL大厂面试题 文章被收录于专栏

牛客网sql大厂面试题题解~

全部评论

相关推荐

KPLACE:首先是板面看起来不够,有很多奖,比我厉害。项目要精减,大概详细描述两到三个,要把技术栈写清楚,分点,什么算法,什么外设,怎么优化,不要写一大堆,分点,你写上去的目的,一是让别人知道你做了这个知识点,然后在面试官技术面的时侯,他知道你会这个,那么就会跟你深挖这个,然后就是个人评价改为专业技能
点赞 评论 收藏
分享
01-14 15:08
东南大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务