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

打印 上一主题 下一主题

主题 1799|帖子 1799|积分 5397

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
样本数据导入:
  1. drop table if exists user_login;
  2. create table user_login
  3. ( `user_id` bigint
  4. ,login_date string
  5. )
  6. ;
  7. insert into table user_login
  8. values
  9. (1,'2025-04-01')
  10. ,(1,'2025-04-02')
  11. ,(1,'2025-04-03')
  12. ,(1,'2025-04-05')
  13. ,(1,'2025-04-06')
  14. ,(2,'2025-04-01')
  15. ,(2,'2025-04-02')
  16. ;在这里插入代码片
复制代码
idlogin_date12025-04-0112025-04-0212025-04-0312025-04-0512025-04-0622025-04-0122025-04-02
  1. WITH ranked_logins AS (
  2.     SELECT
  3.         user_id,
  4.         login_date,
  5.         ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY login_date) AS rn
  6.     FROM (
  7.         SELECT DISTINCT user_id, login_date
  8.         FROM user_login
  9.     ) AS distinct_logins
  10. ),
  11. grouped_logins AS (
  12.     SELECT
  13.         user_id,
  14.         login_date,
  15.         rn,
  16.         DATE_SUB(login_date,rn) AS grp
  17.     FROM ranked_logins
  18. ),
  19. streaks AS (
  20.     SELECT
  21.         user_id,
  22.         grp,
  23.         COUNT(*) AS streak_length
  24.     FROM grouped_logins
  25.     GROUP BY user_id, grp
  26. )
  27. SELECT
  28.     user_id,
  29.     MAX(streak_length) AS max_streak
  30. FROM streaks
  31. GROUP BY user_id;
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张春

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表