通过HIVE SQL获取每个用户的最大连续登录时常

样本数据导入:

复制代码
drop table if exists user_login;
create table user_login
( `user_id` bigint 
,login_date string
)
;


insert into table user_login 
values 
(1,'2025-04-01')
,(1,'2025-04-02')
,(1,'2025-04-03')
,(1,'2025-04-05')
,(1,'2025-04-06')
,(2,'2025-04-01')
,(2,'2025-04-02')
;在这里插入代码片
id login_date
1 2025-04-01
1 2025-04-02
1 2025-04-03
1 2025-04-05
1 2025-04-06
2 2025-04-01
2 2025-04-02
sql 复制代码
WITH ranked_logins AS (
    SELECT 
        user_id,
        login_date,
        ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY login_date) AS rn
    FROM (
        SELECT DISTINCT user_id, login_date
        FROM user_login
    ) AS distinct_logins
),
grouped_logins AS (
    SELECT
        user_id,
        login_date,
        rn,
        DATE_SUB(login_date,rn) AS grp
    FROM ranked_logins
),
streaks AS (
    SELECT
        user_id,
        grp,
        COUNT(*) AS streak_length
    FROM grouped_logins
    GROUP BY user_id, grp
)
SELECT
    user_id,
    MAX(streak_length) AS max_streak
FROM streaks
GROUP BY user_id;
相关推荐
B站计算机毕业设计超人4 天前
计算机毕业设计Django+Vue.js高考推荐系统 高考可视化 大数据毕业设计(源码+LW文档+PPT+详细讲解)
大数据·vue.js·hadoop·django·毕业设计·课程设计·推荐算法
B站计算机毕业设计超人4 天前
计算机毕业设计Django+Vue.js音乐推荐系统 音乐可视化 大数据毕业设计 (源码+文档+PPT+讲解)
大数据·vue.js·hadoop·python·spark·django·课程设计
tryCbest4 天前
数据库SQL学习
数据库·sql
十月南城4 天前
数据湖技术对比——Iceberg、Hudi、Delta的表格格式与维护策略
大数据·数据库·数据仓库·hive·hadoop·spark
王九思4 天前
Hive Thrift Server 介绍
数据仓库·hive·hadoop
cowboy2584 天前
mysql5.7及以下版本查询所有后代值(包括本身)
数据库·sql
努力的lpp5 天前
SQL 报错注入
数据库·sql·web安全·网络安全·sql注入
麦聪聊数据5 天前
统一 Web SQL 平台如何收编企业内部的“野生数据看板”?
数据库·sql·低代码·微服务·架构
山峰哥5 天前
吃透 SQL 优化:告别慢查询,解锁数据库高性能
服务器·数据库·sql·oracle·性能优化·编辑器
Asher05095 天前
Hive核心知识:从基础到实战全解析
数据仓库·hive·hadoop