SQL--查询连续三天登录数据详解

问题: 现有用户登录记录表,请查询出用户连续三天登录的所有数据记录 

id           dt1    2024-04-25 
1    2024-04-26 
1    2024-04-27
1    2024-04-28
1    2024-04-30
1    2024-05-01
1    2024-05-02
1    2024-05-04
1    2024-05-05
2    2024-04-25
2    2024-04-28
2    2024-05-02
2    2024-05-03
2    2024-05-04

期望结果:

 

先创建表并向hive中插入数据: 

create table user_log(id int,dt string
)
row format delimited
fields terminated by '\t';
load data local inpath '/home/hivedata/1107.txt' into table user_log;

--第一步  找出当前日期的后面的第三个日期(函数lead())和真正的三天后日期 (函数date_add())

lead():是一种窗口函数,用于在基于特定排序规则的结果集中,返回当前行之后的某一行(由用户指定偏移量)的指定列的值

date_add():核心功能是对日期进行加法运算。它接受一个日期值和一个时间间隔作为输入,然后返回在该日期基础上增加指定时间间隔后的日期


select *,lead(dt,2) over(partition by id order by dt) late3,date_add(dt,2) true3 from user_log;

查询结果: 

 

--第二步 比较这两个日期是否相等 ,判断当前日期是否是连续三天的

with t as (select *,lead(dt,2) over(partition by id order by dt) late3,date_add(dt,2) true3 from user_log
)
select *,if(late3 == true3,1,0) from t;

查询结果: 

 

--第三步 筛选出符合条件(连续登陆三天)的起始日期 

with t as (select *,lead(dt,2) over(partition by id order by dt) late3,date_add(dt,2) true3 from user_log
),t1 as (select *,if(late3 == true3,1,0) num from t
)
select * from t1 where num=1
;

查询结果:

 

--第四步 将查询出来的表与另一个一行有三条数据的表进行join

with t as (select *,lead(dt,2) over(partition by id order by dt) late3,date_add(dt,2) true3 from user_log
),t1 as (select *,if(late3 == true3,1,0) num from t
),t2 as (select * from t1 where num=1
),t3 as (select * from t2,(select explode(`array`(0,1,2)) add_day) a
)
select id,date_add(dt,add_day) `date` from t3 part
;

两表合并后的查询结果: 

 

 最终查询结果:

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/6816.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构和算法-01背包问题01-认识01背包

0-1背包 什么是0-1背包问题? [0-1背包问题Knapsack Problem] 假设有一个背包,可承载的最大重量是W(kg), 现在有n个物品,每个物品的重量不等, 并且不可分割。我们期待选择几件物品放入背包中,在不超过背包最…

go-carbon 和 gorm 优雅处理数据库日期时间

一、简介 (一) carbon carbon 是一个简单、语义化、开发人员友好的 golang 时间包。carbon 提供了丰富的日期和时间处理功能,使得日期和时间操作更加简单和直观。 (二) gorm gorm 是一个用于 Go 语言的 ORM(对象关系映射)框架。它提供了简…

Java 抽象类 详解

文章目录 一、概述1.1、什么是抽象类1.2、定义抽象类1.3、什么是抽象方法1.4、定义抽象方法 二、特点2.1、抽象类的特点2.1.1、抽象类不可以实例化对象2.1.2、抽象类必须要被继承2.1.3、抽象类的子类2.1.4、抽象类的成员 2.2、抽象方法的特点2.2.1、只能有方法声明,…

A20红色革命文物征集管理系统

🙊作者简介:在校研究生,拥有计算机专业的研究生开发团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹 赠送计算机毕业设计600…

SpringBoot Java教学工具:创新教育体验

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理教学辅助平台的相关信息成为必然。开发合适…

VisionPro —— CogIPOneImgeTool工具详解

CogIPOneImageTool工具主要用来对单张图像进行算法处理操作 CogIPOneImgeTool简介 CogIPOneImageTool 工具可完成高斯平滑、高通滤波和图像量化等基本图像处理操作。Image Processing One Image 工具编辑控件为此工具提供图形用户界面。 Image Processing Operations (图像处…

WPF+MVVM案例实战与特效(二十四)- 粒子字体效果实现

文章目录 1、案例效果2、案例实现1、文件创建2.代码实现3、界面与功能代码3、总结1、案例效果 提示:这里可以添加本文要记录的大概内容: 2、案例实现 1、文件创建 打开 Wpf_Examples 项目,在 Views 文件夹下创建窗体界面 ParticleWindow.xaml,在 Models 文件夹下创建粒子…

推荐一款功能强大的FTP和云应用程序:FTPie Pro

FTPie Pro是一款集多种云存储和 FTP 客户端功能于一体的先进文件管理工具。通过支持Google Drive、Dropbox和OneDrive等主流云存储服务,用户可以在一个平台上高效管理文件。同时,它兼容 FTP、FTPS 和 SFTP 等多种文件传输协议,确保文件传输的…

playwright学习记录1

playwright 简介:Playwright 是由微软推出的一款用于 Web 应用自动化测试的开源框架,它支持多浏览器、多平台,具有强大的 API 和现代化的自动化功能,适用于跨浏览器的 UI 测试。Playwright 支持所有现代渲染引擎,包括…

【鸿蒙】HarmonyOS NEXT应用开发快速入门教程之布局篇(下)

系列文章目录 【鸿蒙】HarmonyOS NEXT开发快速入门教程之ArkTS语法装饰器(上) 【鸿蒙】HarmonyOS NEXT开发快速入门教程之ArkTS语法装饰器(下) 【鸿蒙】HarmonyOS NEXT应用开发快速入门教程之布局篇(上) 【…

数据结构进阶——AVL树

一、AVL树基本概念 1.1定义 如果一颗二叉搜索树的左右子树的高度差的绝对值不超过1(1,0,-1),那么这颗二叉搜索树就叫AVL树。 1.2AVL树的性质 AVL树的左右子树也是一颗AVL树,二叉搜索树是一颗高度平衡的二叉…

Easyconnect官网下载安装使用教程

软件下载 打开官网https://www.sangfor.com/downloads; 选择自己熟悉的语言 windows选择支持与服务—软件下载 mac 找售后智能在线(见下面MAC) 在所有产品与服务中选择:SSL VPN 左侧选择SSL VPN工具,然后根据自…

从神经元到神经网络:深度学习的进化之旅

神经元、神经网络 神经元 Neuron ),又名感知机( Perceptron ),在模型结构上与 逻辑回归 一致,这里以一个二维输入量的例子对其进行进一步 的解释: 假设模型的输 入向 量是一 维特征向 (x1,x2). 则单神 经元的模型结构 如下…

人工智能(AI)和机器学习(ML)技术学习流程

目录 人工智能(AI)和机器学习(ML)技术 自然语言处理(NLP): Word2Vec: Seq2Seq(Sequence-to-Sequence): Transformer: 范式、架构和自注意力: 多头注意力: 预训练、微调、提示工程和模型压缩: 上下文学习、思维链、全量微调、量化、剪枝: 思维树、思维…

Odoo:免费开源的医药流通行业信息化解决方案

文 / 开源智造Odoo亚太金牌服务 方案概述 开源智造Odoo免费开源ERP提供面向医药批发采、供、销业财一体化,及直接面向消费者的门店终端、全渠道管理、营销管理以及GSP合规管理解决方案,提升企业运营效率和全业务链条的数字化管控、追溯能力。 行业的最新…

牛客sql题目总结(1)

1.第N高的薪水 AC: create function getnthhighestsalary(n int) returns int begindeclare m int; set m n - 1; return (select distinct salaryfrom employeeorder by salary desclimit m, 1); end 2.平均播放进度大于60%的视频类别 AC: select tb_video_info…

数量少的连锁店要不要用智能巡检?

无论是在新闻报道中,还是企业定制目标客户时,人们都更喜欢聚焦原本就已经站在各行业金字塔尖的那 1%,剩下的 99% 却常常被忽略。 比如此刻我正在搜索中小型连锁企业智能巡检相关的资讯,但网页展示的结果基本围绕着「中大型、1000门…

windows 进程降权和提权代码示例(2)

强制完整性控制 - Win32 应用程序 |Microsoft 学习 一、强制完整性控制 品03/26/20217 个参与者 反馈 本文内容 诚信标签进程创建强制性政策 强制完整性控制 (MIC) 提供了一种用于控制对安全对象的访问的机制。此机制是对自主访问控制的补充&#xff…

Redis - Set 集合

一、基本了解 集合类型也是保存多个字符串类型的元素的,但和列表类型不同的是,集合中1)元素之间是⽆序 的2)元素不允许重复,如图2-24所⽰。⼀个集合中最多可以存储 32 2 − 1 个元素。Redis除了⽀持 集合内的增删查改…

Java教学辅助:SpringBoot平台实战技巧

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…