【Hive sql 面试题】现有用户登录记录表,请查询出用户连续三天登录的所有数据记录(难)

文章目录


1、表数据

sql 复制代码
1	2024-04-25 
1	2024-04-26 
1	2024-04-27
1	2024-04-28
1	2024-04-30
1	2024-05-01
1	2024-05-02
1	2024-05-04
1	2024-05-05
2	2024-04-25
2	2024-04-28
2	2024-05-02
2	2024-05-03
2	2024-05-04

2、建表和加载数据语句

sql 复制代码
create table user_log(
  id int,
  dt string
)
row format delimited
fields terminated by '\t';

load data local inpath '/home/hivedata/user_log.txt' into table user_log;

3、思路

1、判断是否连续登录三天

如何判断:

使用 lead() 函数求出每条三行之后的数据,再求出本条数据日期三天以后的日期(date_add() 函数),这两个值相等的就是连续登录三天

2、拿到满足连续登录三天的最开始的那一天

3、使用笛卡尔积拿到用户连续三天登录的所有数据记录

4、答案

sql 复制代码
with t as (
    select *,lead(dt,2) over (partition by id order by dt) lead_3_days,date_add(dt,2) true_3_days from user_log
),t2 as (
    select * from t where lead_3_days = true_3_days
)
select id,date_add(dt,d.list) dt2  from t2,(select explode(array(0,1,2)) list) d;
相关推荐
一名普通的电源工程师30 分钟前
E0512XT-1WR3 适配优选 钡特电源 DF1-05D12XT|1W 隔离5V转±12V模块电源选型参数技术解析
大数据·网络·人工智能
SelectDB41 分钟前
Apache Doris 2026 Roadmap:AI 时代数据基础设施如何选型?Doris 给出了三层架构答案
大数据
Think_Higher1 小时前
CID行业趋势周报|7.27—8.02:大盘表现、重点赛道与投测建议
大数据·人工智能
林澈在路上1 小时前
2026 主流 AI 写歌 APP 全面测评|零基础原创歌曲工具选购指南
大数据·人工智能·aigc·音视频·音频
2501_946736162 小时前
在线考试平台如何选型?从功能、优势与应用场景角度详解
大数据·人工智能·算法
字节跳动数据平台3 小时前
文件上传即可检索|实时多模态向量链路落地实践分享
大数据
一个数据大开发3 小时前
Skill、Tool、SOP、MCP 文章合集
大数据·人工智能·知识图谱
大大大大晴天️4 小时前
浅析StarRocks 表设计:表类型、分布策略与索引
大数据·starrocks
weixin_397574094 小时前
按行业定制分析视角
大数据·数据库·人工智能·企业数据治理·数据驱动决策·本体语义·企业经营分析
阴雨天xiiii4 小时前
德国慕尼黑国际太阳能展特装展台施工落地方案拆解
大数据·网络