首页 > 其他分享 >Hive 连续登录问题

Hive 连续登录问题

时间:2022-12-27 12:44:32浏览次数:36  
标签:02 03 登录 Hive day 连续 2022 id user

需求说明

有以下一个表,记录了用户登录数据

desc temp_user_login;
day_id    string
user_id    int
if_login    int
select* from temp_user_login order by user_id,day_id;
2022-03-01    1    1
2022-03-01    2    0
2022-03-01    3    0
2022-03-02    1    1
2022-03-02    2    1
2022-03-02    3    0
2022-03-03    1    1
2022-03-03    2    0
2022-03-03    3    1
2022-03-04    1    1
2022-03-04    2    0
2022-03-04    3    0
2022-03-05    1    1
2022-03-05    2    1
2022-03-05    3    1

现在要求取出 连续登录3天以上的用户明细

实现逻辑

这个问题可以使用等差数列思想来解决

1、先取出登录系统的用户信息:登录用户,登录日期,按照用户分组,排序

select user_id, day_id, row_number() over (partition by user_id order by day_id desc ) rn
from temp_user_login
where if_login = 1
order by 1, 2;
1    2022-03-01    5
1    2022-03-02    4
1    2022-03-03    3
1    2022-03-04    2
1    2022-03-05    1
2    2022-03-02    2
2    2022-03-05    1
3    2022-03-03    2
3    2022-03-05    1

2、使用rn构建等差数列

select user_id, day_id, rn, date_sub(day_id,  rn) interval_day
from (select user_id, day_id, row_number() over (partition by user_id order by day_id   ) rn
      from temp_user_login
      where if_login = 1) t
order by 1, 2;
1    2022-03-01    1    2022-02-28
1    2022-03-02    2    2022-02-28
1    2022-03-03    3    2022-02-28
1    2022-03-04    4    2022-02-28
1    2022-03-05    5    2022-02-28
2    2022-03-02    1    2022-03-01
2    2022-03-05    2    2022-03-03
3    2022-03-03    1    2022-03-02
3    2022-03-05    2    2022-03-03

3、聚合分组

select user_id
from (select user_id, date_sub(day_id,  rn) interval_day
      from (select user_id, day_id, row_number() over (partition by user_id order by day_id   ) rn
            from temp_user_login
            where if_login = 1) t) t
group by user_id, interval_day
having count(1) >= 3
order by 1
1

这样既可以实现连续登录问题了

标签:02,03,登录,Hive,day,连续,2022,id,user
From: https://www.cnblogs.com/wdh01/p/16891750.html

相关文章

  • Hive 自定义函数
    Hive自带了一些函数,比如:max/min等,但是数量有限,自己可以通过自定义UDF来方便的扩展。当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UD......
  • 前端·学习 | 登录界面特效(一)
    ​ 目录前言:特效展示实现代码:html部分:css部分:js部分:总结:前言: 个人学习内容分享特效展示前端界面特效(一) 实现代码:html部分:<!DOCTYPEhtml><ht......
  • 远程登录管理
    年轻这个借口,不知道还能用多久。。。---- 网易云热评小攻:win7 IP地址:192.168.1.129小受:win2003 IP地址:192.168.1.130一、图形界面登录(mstsc)1、小受新建添加一个用户......
  • 登录功能和添加功能
    list.jsp页面调整:<%@pagecontentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><!......
  • Flask+Vue 用户登录
    后端开发环境Flask2.2.2Flask-Cors3.0.10Flask-HTTPAuth4.5.0Flask-RESTful0.3.9itsdangerous2.0.1代码目录结构D:.│......
  • python之路56 csrf跨站请求 auth模块登录注册方法
    csrf跨站请求伪造钓鱼网站:模仿一个正规的网站让用户在该网站上做操作但是操作的结果会影响到用户正常的网站账户但是其中有一些猫腻eg:英语四六级考试需要网上先......
  • 安全单点登录(SSO)解决方案
    随着企业大量采用云应用程序,最终用户不得不在一天中处理越来越多的密码,只是为了完成他们的工作。为了进行有效的用户身份管理,您需要采用一种有效且安全的方法来管理用户;密......
  • 【AGC】集成付费下载服务sdk登录闪退
    问题背景:cp反馈集成付费下载sdk在正常登录时,出现登录闪退的报错,出现故障的手机型号操作系统版本是Android9,集成的付费下载的版本号是drm_v2.5.2.300。部分报错信息:​解决方......
  • 【AGC】集成付费下载服务sdk登录闪退
    问题背景:cp反馈集成付费下载sdk在正常登录时,出现登录闪退的报错,出现故障的手机型号操作系统版本是Android9,集成的付费下载的版本号是drm_v2.5.2.300。部分报错信息:​ ......
  • 046.hive-数据迁移脚本
     https://www.dandelioncloud.cn/article/details/1525380158727143425--===================hive迁移导出导入数据流程=========================--=============......