当前位置: 首页 > news >正文

移动网站mip工程项目管理软件app

移动网站mip,工程项目管理软件app,医疗器械四大龙头企业,河北中小企业网站1.背景 统计连续登录天数超过3天的用户,输出信息包括:用户id,登录天数,起始时间,结束时间; 2.准备数据 -- 建表 create table if not exists user_login_3days(user_id STRING,login_date date );--插入…

1.背景

统计连续登录天数超过3天的用户,输出信息包括:用户id,登录天数,起始时间,结束时间;

2.准备数据

-- 建表
create table if not exists user_login_3days(user_id STRING,login_date date
);--插入数据
insert into user_login_3days values ('01','2023-08-02');
insert into user_login_3days values ('01','2023-08-03');
insert into user_login_3days values ('01','2023-08-04');
insert into user_login_3days values ('01','2023-11-02');
insert into user_login_3days values ('01','2023-12-09');
insert into user_login_3days values ('02','2023-01-01');
insert into user_login_3days values ('02','2023-04-23');
insert into user_login_3days values ('03','2023-09-10');
insert into user_login_3days values ('03','2023-09-11');
insert into user_login_3days values ('03','2023-09-12');
insert into user_login_3days values ('04','2023-04-23');
insert into user_login_3days values ('04','2023-04-24');
insert into user_login_3days values ('05','2023-09-11');
insert into user_login_3days values ('06','2023-09-12');-- 查询数据数据
select * from user_login_3days order by user_id;

在这里插入图片描述

3.解决思路以及实现

思路1:row_number()

  • 1.通过对用户id进行开窗函数row_number,对登陆时间进行降序排列
  • 2.使用date_sub(login_date,rn)函数进行日期求出差值日期
  • 3.对user_id和diff_date分组求出时间的区间范围
  • 4.对结果进行过滤操作
SELECTt2.user_id,count(1)           as login_times,min(t2.login_date) as start_date,max(t2.login_date) as end_date
FROM
(SELECTt1.user_id,t1.login_date,date_sub(t1.login_date,rn) as diff_dateFROM(SELECTuser_id,login_date,row_number() over(partition by user_id order by login_date asc) as rnFROM user_login_3days) t1
) t2
group by t2.user_id, t2.diff_date
having login_times >= 3;

思路2:lag()/lead()

  • 1.通过对用户id进行开窗函数lag/lead,求出前面第二个的日期与当前的日期差以及后面一个日期与当前日期的差值
  • 2.对结果进行过滤操作
SELECTuser_id,lag_login_date,login_date
FROM(SELECTuser_id,login_date,lag(login_date,2,login_date) over(partition by user_id order by login_date) as lag_login_date,lead(login_date,1,login_date) over(partition by user_id order by login_date) as lead_login_dateFROM user_login_3days) t1
where datediff(login_date,lag_login_date) =2

4.总结

连续登陆问题解决的关键在于:如何判断连续?
通过对user_id分组排序后,使用登陆日期减去序号rn。如果连续,则得到的这个日期会相同。

http://www.yayakq.cn/news/515399/

相关文章:

  • 宣传网站建设华为 wordpress
  • 朔州如何做百度的网站适合做网站的软件有哪些
  • 自建视频网站p2p网站开发公司
  • 做网站如何变现网页设计制作
  • 网站制作说明书企业怎样建立自己的网站
  • 多个招聘网站格式不一致如何做招聘记录聊城做网站优化
  • 厦门市建设局网站首页wordpress 登录插件
  • 搭建网站公司哪家好环球旅行社网站建设规划书
  • 搭建网站平台有前途吗网站开发工程师累不累
  • 宁夏住房和城乡建设厅网站首页网站建设功能的策划书
  • 网站开发技术期末考试 及答案博罗做网站技术
  • 手机网站重要性网络公司都有哪些
  • 淘宝客 网站 备案做图片能去哪些网站吗
  • 武冈做网站厦门市保障性住房官网
  • 哈尔滨市住房与城乡建设局网站建设网站商城
  • dw做的网站如何上传网站建设补充协议模板
  • 想给公司做网站怎么做国内管理咨询公司排名前十名
  • 沈阳健网站手机版的网站怎样做呢
  • 各大网站图片做网站设计制作的公司
  • 网站制作关键词wordpress 三款站群插件之比较
  • 沧州市青县建设局网站二级域名前缀大全
  • 江苏住房和城乡建设厅官方网站苏州的网站建设公司
  • 长沙网络建设的网站小公司做网站多少钱
  • 网站手机源码0元创业
  • 网站模板psd素材wordpress大道至简
  • 深圳龙华大浪做网站公司响应式网站建设市场
  • 网站做图尺寸大小网站架构策划书
  • 公司如何建设网站医院网站建设费用
  • 网站建设的费用wordpress粉丝主题
  • 百度快照网站怎么做引流推广软件