通过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;
相关推荐
不剪发的Tony老师13 小时前
Noir:一款键盘驱动的现代化数据库管理工具
数据库·sql
光泽雨16 小时前
UNION 和 UNION ALL 作用
数据库·sql
heimeiyingwang16 小时前
【架构实战】SQL调优实战:从执行计划到索引优化
数据库·sql·架构
XDHCOM16 小时前
ORA-06521: PL/SQL映射函数错误,权威解析Oracle报错故障修复与远程处理方案
数据库·sql·oracle
数厘17 小时前
2.11 约束的使用(主键、外键、非空、唯一、默认值约束)
sql·mysql·数据分析
大大大大晴天️17 小时前
Flink技术实践-Flink SQL 开发中的隐蔽陷阱
大数据·sql·flink
隐于花海,等待花开18 小时前
FIND_IN_SET 与 LIKE 函数:使用场景及性能对比
hive
数厘1 天前
2.12 sql 数据插入(INSERT INTO)
数据库·sql·oracle
A__tao1 天前
一键实现 SQL → ES Mapping 转换,支持自定义 `text` 为 `json` 转换
sql·elasticsearch·json
夕除1 天前
javaweb--04
数据仓库·hive·hadoop