HIVE面试题

这是一篇关于Hive SQL面试题的讨论,涵盖了如何计算用户发的朋友圈数量和获得的点赞数,处理产品版本号的最高版本,以及用户留存率的计算。在用户留存部分,要求计算2019年1月1日新增用户的次日到次7日留存,并设计了一个用于长期监控新用户留存的调度任务。面试题重点考察了SQL优化和分区表的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目一:计算平台的每一个用户发过多少朋友圈、获得多少点赞
已知,数据如下:

T1:数十万行数据
表
需求:请用sql计算出如下结果:
表

SELECT
t1.uid,
count(t1.log_id),
sum(a.count_like_uid)
from
t1 LEFT join 
(select log_id,count(like_uid) as count_like_uid from t2 group by log_id)a
on t1.log_id=a.log_id GROUP BY uid;

题目二:处理产品版本号
版本号信息存储在数据表中,每行一个版本号。
版本号命名规则如下:
产品版本号由三个部分组成
如:9.11.2
第一部分9为主版本号,为1-99之间的数字;
第二部分11为子版本号,为0-99之间的数字;
第三部分2为阶段版本号,为0-99之间的数字(可选);

请根据具体条件和问题,使用hive sql编程:
1.条件:T1表有100个版本号,找出其中最大的版本号。

举例:
T1:
表

select 
v_id
from 
(
select 
v_id,
dense_rank() over(order by one desc ,two desc,three desc) as rn
from 
(select 
id,
cast(split(v_id,"\\.")[0] as int) as one,
cast(split(v_id,"\\.")[1] as int) as two,
cast(split(v_id,"\\.")[2] as int) as three
from
t1)t2)t3
where rn=1

2.条件:T1表有1000万个版本号,给如下格式的所有版本号排序。对于相同的版本号,顺序号一致。
table_result (排序结果表) :
表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值