通过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;
相关推荐
珹洺3 小时前
数据库系统概论(十一)SQL 集合查询 超详细讲解(附带例题表格对比带你一步步掌握)
数据库·sql
珹洺8 小时前
数据库系统概论(十二)SQL 基于派生表的查询 超详细讲解(附带例题表格对比带你一步步掌握)
java·数据库·sql
岁忧11 小时前
LeetCode 高频 SQL 50 题(基础版) 之 【高级查询和连接】· 上
数据库·sql·leetcode
北漂老男孩12 小时前
Hadoop 大数据启蒙:初识 HDFS
大数据·hadoop·hdfs
小陈又菜12 小时前
SQL Transactions(事务)、隔离机制
数据库·sql·事务·隔离机制
viperrrrrrrrrr713 小时前
大数据学习(127)-hive日期函数
大数据·hive·学习
Lx35214 小时前
EXISTS 替代 IN 的性能优化技巧
后端·sql
朝九晚五ฺ14 小时前
【MySQL基础】库的操作:创建、删除与管理数据库
数据库·sql·mysql
北漂老男孩14 小时前
Hadoop 大数据启蒙:深入解析分布式基石 HDFS
大数据·hadoop·分布式·hdfs·学习方法
珹洺15 小时前
数据库系统概论(十五)详细讲解数据库视图
android·java·数据库·sql