【hive】经典笔试面试题(二)连续登录天数最大

本文介绍了一道关于使用Hive统计用户连续登录天数最大值的面试题。通过分析和解答,展示了如何利用辅助列和差值判断连续登录,以及涉及的Hive SQL知识点,包括字符串转时间戳、窗口函数等。还探讨了如果考虑跨年连续登录的情况,可以使用datediff函数来处理。
摘要由CSDN通过智能技术生成

问题描述

在数据仓库中存在这样一张表,记录了2019年所有用户在哪天登录了我司的网站或者app。数据如下:
表名:test2
字段:id string,pday string
在这里插入图片描述
需求:统计用户在本年中连续登录天数最大是几天?如:
用户A在7月1、2、3、4日连续登录了4天;6、7、8日连续3天;11、12连续2天。用户A的当年最大连续登录天数是4天
用户B在6月29日,6月30日,7月1日连续登录3天。用户B的当年最大连续登录天数是3天
需要的到的结果是这样的:
在这里插入图片描述

题目刨析

此题需要将连续的天数打上相同的标签进行聚合。得到连续天数数量之后,取到最大值。
可难点就是确定哪些天数是连续的,凭什么将连续的日期放在一起呢?
我的思路是这样的,我们需要两个辅助列。
第一列:将每个用户的登录日期从小到大排序
第二列:登录日期在当年是第几天
我们先将两个辅助列写出来,看看是什么效果:

select 
    id
  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值