Hive综合案例练习(中级)第三十七题:统计活跃间隔对用户分级结果

统计活跃间隔对用户分级结果

题目需求

用户等级:

忠实用户:近7天活跃且非新用户

新晋用户:近7天新增

沉睡用户:近7天未活跃但是在7天前活跃

流失用户:近30天未活跃但是在30天前活跃

假设今天是数据中所有日期的最大值,从用户登录明细表中的用户登录时间给各用户分级,求出各等级用户的人数

结果如下:

Level(用户等级)Cn(用户数量)
忠实用户6
新增用户3
沉睡用户1

代码实现

select
  t2.level,
  count(*)
from
  (
    select
      uld.user_id,
      case
         when (date_format(max(uld.login_ts),'yyyy-MM-dd') <=date_sub(today, 30))
             then '流失用户'-- 最近登录时间三十天前
         when (date_format(min(uld.login_ts),'yyyy-MM-dd') <=date_sub(today, 7) and date_format(max(uld.login_ts),'yyyy-MM-dd') >=date_sub(today, 7))
             then '忠实用户' -- 最早登陆时间是七天前,并且最近七天登录过
         when (date_format(min(uld.login_ts),'yyyy-MM-dd') >=date_sub(today, 7))
             then '新增用户' -- 最早登录时间是七天内
         when (date_format(min(uld.login_ts),'yyyy-MM-dd') <= date_sub(today, 7) and date_format(max(uld.login_ts),'yyyy-MM-dd') <= date_sub(today, 7))
             then '沉睡用户'-- 最早登陆时间是七天前,最大登录时间也是七天前
       end level
    from
      user_login_detail  uld
    join
      (
        select 
          date_format(max(login_ts),'yyyy-MM-dd') today 
        from
          user_login_detail
    )t1
    on
      1=1
    group by 
      uld.user_id,t1.today
    )t2
group by
  t2.level
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yiluohan0307

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

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

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

打赏作者

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

抵扣说明:

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

余额充值