Hive QL解题流程详解三

第5题

有日志如下,请写出代码求得所有用户和活跃用户的总数及平均年龄。(活跃用户指连续两天都有访问记录的用户)日期 用户 年龄

数据集

2019-02-11,test_1,23
2019-02-11,test_2,19
2019-02-11,test_3,39
2019-02-11,test_1,23
2019-02-11,test_3,39
2019-02-11,test_1,23
2019-02-12,test_2,19
2019-02-13,test_1,23
2019-02-15,test_2,19
2019-02-16,test_2,19

1) 建表

create table log_info(
dt string,
user string,
age int
)
row format delimited
fields terminated by ',';   

需求:所有用户和活跃用户的总数及平均年龄

2) 按照日期以及用户进行分组,按照日期排序并给出排名

select
dt,
user,
min(age) age,
rank() over(partition by user order by dt) rk
from log_tab
group by
dt,
user;t1

3) 计算日期及排名的差值

select
user,
age,
data_sub(dt,rk) flag
from
t1;t2

4) 过滤出差值大于等于2的,即是连续两天活跃的用户

sel
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值