第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