Hive综合案例练习(中级)第二十八题:查询有新注册用户的当天的新用户数量、新用户的第一天留存率

查询有新注册用户的当天的新用户数量、新用户的第一天留存率

题目需求

从用户登录明细表(user_login_detail)中首次登录算作当天新增,第二天也登录了算作一日留存

结果如下:

first_login(注册时间)Register(新增用户数)Retention(留存率)
2021-09-2110.0
2021-09-2210.0
2021-09-2310.0
2021-09-2410.0
2021-09-2510.0
2021-09-2610.0
2021-09-2710.0
2021-10-0420.5
2021-10-0610.0

代码实现

  • 获取每个用户首次登录时间和第二天是否登录,并求得每天新增和留存数量
select first_login,
       count(t1.user_id) register,
       count(t2.user_id) remain
from (
         select user_id,
                date_format(min(login_ts), 'yyyy-MM-dd') first_login
         from user_login_detail
         group by user_id
     ) t1
         left join user_login_detail t2
                   on t1.user_id = t2.user_id and
                      datediff(date_format(t2.login_ts, 'yyyy-MM-dd'), date_format(t1.first_login, 'yyyy-MM-dd')) = 1
group by first_login;
  • 求新增数量和留存率
select first_login,
       register,
       remain / register rentention
from (
         select first_login,
                count(t1.user_id) register,
                count(t2.user_id) remain
         from (
                  select user_id,
                         date_format(min(login_ts), 'yyyy-MM-dd') first_login
                  from user_login_detail
                  group by user_id
              ) t1
                  left join user_login_detail t2
                            on t1.user_id = t2.user_id and
                               datediff(date_format(t2.login_ts, 'yyyy-MM-dd'),
                                        date_format(t1.first_login, 'yyyy-MM-dd')) = 1
         group by first_login
     ) t2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yiluohan0307

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值