hive经典面试题_用户最大的连续登陆天数

这篇博客探讨了一种使用Hive查询用户最大连续登陆天数的方法。通过窗口函数和日期函数,首先对用户的登陆日志按日期排序,然后计算日期差以识别连续登陆,最终聚合得到每个用户的最长连续登陆天数。这是一个典型的数据分析问题,适用于大数据处理场景。
摘要由CSDN通过智能技术生成

工作面试、业务时间刷题过程中遇到一些经典问题,聊做记录,权当做温习或者以后自己有机会作为面试er&官使用。不足之处望多多指正

hive经典面试题_用户最大的连续登陆天数

1、用户最大登陆天数问题

题述

  • 用户登陆日志数据格式
字段名描述
user_id用户id
log_date登陆日期
  • 问题:
    求表中用户各自连续的最长时间

题解

  • 思路
    首先利用窗口对用户的登陆时间做排序操作,再通过date_sub做序差从而得到用户判断连续登陆的字段row_date,最后通过row_date聚合统计到其中最大的数值即为用户最大的连续登陆天数;
  • 知识点:窗口函数日期函数
  • 代码
-- 用户连续登陆最大天数
-- log_date user_id
-- 登陆日志表 a
select user_id
      ,max(day_num) as max_day_num
  from (
		select user_id
		      ,data_sub(log_date,cast(row_number_log,int)) as row_date
		      ,count(1) as day_num
		 from (
				select log_date
				      ,user_id
				      ,row_number()over(patition by user_id order by log_date) as row_number_log
				  from a
		      ) b
		 group by user_id
		         ,data_sub(log_date,cast(row_number_log,int))
       ) c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

胸中有数-数分版

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

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

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

打赏作者

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

抵扣说明:

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

余额充值