如何查询出连续日期记录

有在论坛上看到一帖,《请教查询出连续日期记录的方法》,截图如下:

 

Insus.NET尝试写了程序并做了测试,可以得到预期的结果,SQL代码可参考和学习之用。

ExpandedBlockStart.gif View Code
-- 创建一个临时表,将会存储连续日期的记录
CREATE   TABLE  # temp  (IDD  VARCHAR ( 10 ),SDATE  DATETIME )

DECLARE   @sD   DATETIME    -- 开始日期
DECLARE   @eD   DATETIME    -- 结束日期

-- 在记录中,找出开始与结束日期
SELECT   @sD   =   MIN ( [ SDATE ] ),  @eD   =   MAX ( [ SDATE ] FROM   [ TT ]  


DECLARE   @N   INT   =   0    -- 宣告一个变量,存储累记录数

-- 循环日期
WHILE  ( @sD   <=   @eD )
BEGIN     
    
    
-- 如果存在
     IF   EXISTS  ( SELECT   TOP   1   1   FROM   [ TT ]   WHERE   [ SDATE ]   =   @sD )
    
BEGIN
        
SET   @sD   =   DATEADD ( day , 1 , @sD -- 日期加1天                
         SET   @N   =   @N   +   1   -- 记录加1
     END
    
ELSE    -- 如果不存在
     BEGIN
        
IF  ( @N   >=   3 -- 判断是否大于或等于3            
             INSERT   INTO  # temp   SELECT   [ IDD ] , [ SDATE ]   FROM   [ TT ]   WHERE   [ SDATE ]   BETWEEN   DATEADD ( day , - @N , @sD AND   @sD     
        
        
-- 日期加1天                            
         SET   @sD   =   DATEADD ( day , 1 , @sD )
        
SET   @N   =   0    -- 初始化为0                
     END
END

-- 列出符合条件的记录
     SELECT   *   FROM  # temp


上面的方法,实际可以把IF (@N >= 3)这句中的3改为一个变量,这样可以方便以后的程序扩展,某一天需要改为连续2天,4天,5天,或任何一天。

 

ibaAnalyzer 6.7.2:专业数据分析工具的新突破 简介:ibaAnalyzer 6.7.2版本带来了性能提升、新功能引入、用户体验增强、稳定性和兼容性提高。软件通过先进的数据分析方法、丰富的数据可视化选项、实时监控、自定义设置、集成能力和安全隐私保护,为用户提供强大而灵活的数据处理解决方案。 阅读详情

相关推荐

mysql计算连续天数,mysql连续登录天数,连续天数统计

NULL 博文链接:https://fanshuyao.iteye.com/blog/2341455

mysql查询连续天数数据

连续天数查询

奔跑的菜鸡 2319

mysql如何查询两个日期之间最大的连续登录天数

在现在的很多网站中都有这样一个功能。记录用户的连续登陆天数,所谓的连续在线是指相邻两天都登录过,不一定一直在线,但是只要有过登录即可。这篇文章主要介绍的是利用sql语句如何查询在两个日期之间最大的连续登录天数,有需要的朋友们下面来一起看看吧。

ibaanalyzer使用教程_ibaanalyzer中文手册

ibaibaAnalyzer是对ibaPDA用户定义的测量数据记录*.dat文件...ibaibaAnalyzer是对ibaPDA用户定义的测量数据记录*.dat文件...ibaAnalyzer Interactive Analysis Reports...并且可以依据 离线软件ibaAnalyzer,对于大量过程数据进行高精度、高级别...Vigiprint 中文操作手册 V4_IT/计算机_专...

weixin_39996234的博客 6713

mysql 查询连续记录_sqlserver中如何查询连续日期记录的代码

Insus.NET尝试写了程序并做了测试,可以得到预期的结果,SQL代码可参考和学习之用。有在论坛上看到一帖,《》,截图如下:Insus.NET尝试写了程序并做了测试,可以得到预期的结果,SQL代码可参考和学习之用。代码如下:--创建一个临时表,将会存储连续日期记录CREATE TABLE #temp (IDD VARCHAR(10),SDATE DATETIME)DECLARE @sD DAT...

weixin_34693167的博客 431

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

期望结果:查询表内容。

wadjdkdkdjjd的博客 582

【面试题】Hive 查询:如何找用户连续三天登录的记录

在分析用户行为时,查询用户的连续登录数据是一个常见需求。例如,我们需要找每个用户连续三天登录的记录。给定一个包含用户登录记录的表,我们需要对这些数据进行处理,提取用户连续三天登录的日期

weixin_63297999的博客 1342

【SQL】查询已经连续7天登陆的用户

整体思路: 用户登录日期去重-->row_number()函数分组排序获得排序编号-->日期减去编号——根据每个用户count(值)判断连续登陆天数 具体实现: 用户每天登陆次数可能不止一次,所以需要将日期去重。 用row_number()函数将用户分组,按照去重后的日期排序后计数得到登录次数。 然后用日期减去计数得到结果(如果每次减去的结果相同,则表明用户一直处于连续登陆登录状态)。 最后按照用户和结果分组,得到相同值现的次数,此时得到的值大于等于7的就是连续7天登陆的用户了。 实

qq_654603797 6084

oracle 连续日期统计

select t2.user_id,t2.start_time, t2.score ,t2.win_coins from (  select d.user_id,d.start_time, d.score ,d.win_coins  from (      select user_id ,to_char(start_time,'yyyymmdd')as start_time,score,w

yuan8080的专栏 7000

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

它接受一个日期值和一个时间间隔作为输入,然后返回在该日期基础上增加指定时间间隔后的日期。lead():是一种窗口函数,用于在基于特定排序规则的结果集中,返回当前行之后的某一行(由用户指定偏移量)的指定列的值。--第一步 找当前日期的后面的第三个日期(函数lead())和真正的三天后日期 (函数date_add())问题: 现有用户登录记录表,请查询用户连续三天登录的所有数据记录。--第四步 将查询来的表与另一个一行有三条数据的表进行join。--第三步 筛选符合条件(连续登陆三天)的起始日期

weixin_64860388的博客 1136

MySQL 定位连续值范围

备注:测试数据库版本为MySQL 8.0 测试数据: create table v(proj_id int,proj_start date,proj_end date); insert into v values (1,'2020-10-01','2020-10-02'); insert into v values (2,'2020-10-02','2020-10-03'); insert into v values (3,'2020-10-03','2020-10-04'); insert into v

只是甲的博客 584

MYSQL查询连续日期数据

查询连续多前天幼儿请假数据 SELECT child_id, val - ( @rownum := @rownum + 1 ) AS flag, group_concat( adate ) AS date_join, GROUP_CONCAT(id), COUNT( 1 ) num FROM ( SELECT t1.id, t1.adate, t1.child_id, t1.`status`, ( unix_timestamp( t1.adate ) - t2.min_u

fmy1023的博客 1632

mysql 连续打卡天数_Sql如何统计连续打卡天数

今天来解一道题面试中可能经常会被一些面试官拿来“刁难”的题,就是《如何统计连续打卡天数》,当然了这里面的打卡可以换成任意其他行为,比如连续登陆天数,连续学习天数,连续购买天数,这里的天数也是可以换成小时或者别的时间单位的。这个问题的逻辑还是有点复杂,如果要是之前没遇到过这种问题,当场被问到的时候,肯定会一脸懵。直接来看实战,现在有一张表t,这张表存储了每个员工每天的打卡情况,现在需要统计截止目前每...

weixin_35717941的博客 1184
0粉丝 0原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值