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

南京网站制作西安公司网站建设服务

南京网站制作西安,公司网站建设服务,兼职网站排行,零基础网站制作视频教程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.hkea.cn/news/160099/

相关文章:

  • 网站开发属于什么职位类别seo查询站长工具
  • wordpress postmetaseoul national university
  • 商务网站的主要存在形式杭州百度快照优化公司
  • 个人备案网站做购物网站可以不班级优化大师免费下载电脑版
  • 贸易网站建设互联网广告代理加盟
  • 深圳网站建设网络公司河北关键词排名推广
  • 在工商网上怎么注册公司seo优化博客
  • 免费的小程序怎么赚钱历下区百度seo
  • 河北石家庄最新疫情最新消息优化防疫政策
  • 一站式做网站哪家强新闻小学生摘抄
  • 江西南昌网站建设公司哪家好谷歌google 官网下载
  • 公司网站用什么开发百度指数怎么用
  • 建站主机 wordpress济南网站万词优化
  • 哈尔滨app开发seo自学网官网
  • 网站答辩ppt怎么做全网关键词云在哪里看
  • 网站建设 视频seo关键词词库
  • 网站应用软件设计成都网站建设技术外包
  • 用哪个软件做网站网址查询域名解析
  • 网站安全优化域名停靠浏览器
  • 我做中医培训去哪个网站找学员谷歌排名算法
  • 如何将网站让百度收录网店培训班
  • wordpress旧版页面编辑界面百度seo推广计划类型包括
  • 网站建设茶店网网站换友链平台
  • 珠海建设工程信息网站网络营销百度百科
  • 帮别人做网站推广犯法吗关键词排名网站
  • 建设通网站是政府的么高端网站定制设计
  • 玉溪做网站的公司夸克搜索网页版
  • wordpress导航主题haowseo挂机赚钱
  • 广州做家教的网站深圳网络推广招聘
  • 锐捷网络公司排名seo技术介绍