首页 > 数据库 >sql 查找连续的时间区间以及连续天数

sql 查找连续的时间区间以及连续天数

时间:2023-01-16 16:56:59浏览次数:37  
标签:insert rq -- tmptable 查找 values 连续 sql 2010.1

create table tmptable(rq datetime)
go
insert tmptable values('2010.1.1')
insert tmptable values('2010.1.2')
insert tmptable values('2010.1.3')
insert tmptable values('2010.1.6')
insert tmptable values('2010.1.7')
insert tmptable values('2010.1.10')
insert tmptable values('2010.1.11')
insert tmptable values('2010.1.12')
insert tmptable values('2010.1.19')
insert tmptable values('2010.1.20')
insert tmptable values('2010.1.22')
insert tmptable values('2010.1.23')
insert tmptable values('2010.1.28')
go
---希望得到的结果
--本期起始日期 本期终止日期  持续天数 距上一期天数
--2010.1.1     2010.1.3      3        0
--2010.1.6     2010.1.7      2        3
--2010.1.10    2010.1.12     3        3
--2010.1.19    2010.1.20     2        7
--2010.1.22    2010.1.23     2        2
--2010.1.28    2010.1.28     1        5
SELECT 本期起始日期 = MIN(rq)
    , 本期终止日期 = MAX(rq)
    , 持续天数 = MAX(id1) - MIN(id1) + 1
    , 距上一期天数 = CASE a.id1 - a.id2
        WHEN -1 THEN 0
        ELSE MAX(datediff(d, rq2, rq))
    END
FROM (
    SELECT id1 = datediff(d, '2010-01-01', rq)
        , id2 = (
            SELECT COUNT(1)
            FROM tmptable
            WHERE rq <= a.rq
        ), rq2 = (
            SELECT MAX(rq)
            FROM tmptable
            WHERE rq < a.rq
        )
        , *
    FROM tmptable a
) a
GROUP BY a.id1 - a.id2
 
/*
本期起始日期                  本期终止日期                  持续天数        距上一期天数
----------------------- ----------------------- ----------- -----------
2010-01-01 00:00:00.000 2010-01-03 00:00:00.000 3           0
2010-01-06 00:00:00.000 2010-01-07 00:00:00.000 2           3
2010-01-10 00:00:00.000 2010-01-12 00:00:00.000 3           3
2010-01-19 00:00:00.000 2010-01-20 00:00:00.000 2           7
2010-01-22 00:00:00.000 2010-01-23 00:00:00.000 2           2
2010-01-28 00:00:00.000 2010-01-28 00:00:00.000 1           5
警告: 聚合或其他 SET 操作消除了空值。
 
(6 行受影响)
*/

原文链接:https://www.shuzhiduo.com/A/VGzlNZ2x5b/

标签:insert,rq,--,tmptable,查找,values,连续,sql,2010.1
From: https://www.cnblogs.com/SmallChen/p/17055811.html

相关文章

  • mysql主从同步失败 错误码1594
    起因某日mysql主从同步发生了错误,此时发现从库不再执行同步操作,于是在从库执行showslavestatus\G发现如下错误:上图中标红色的需要重点关注。解决办法之前出现其他常......
  • SQL注入练习
    1.确定功能点是否与数据库存在交互可能,参数是否可控2.确定功能点是否注入点id=1and1=2后面用hackbar64编码3.确定功能点对应的注入语句原型与注入参数类型判断是数字型......
  • sqlmock
    packageprivatedbimport("fmt""github.com/DATA-DOG/go-sqlmock"_"github.com/mattn/go-sqlite3""github.com/stretchr/testify/assert""testing")func......
  • SQL Server查找未提交事务
    USEmasterGOSETTRANSACTIONISOLATIONLEVELREADUNCOMMITTEDSELECTes.session_id,es.login_name,es.host_name,est.text,cn.last_read,cn.last_write,es.pr......
  • mysql8.0.30主从配置
    安装包下载地址:https://downloads.mysql.com/archives/community/1、解压介质包:#tarxfmysql-8.0.30-linux-glibc2.12-x86_64.tar.xz#mvmysql-8.0.30-linux-glib......
  • MySQL自定义排序ORDER BY FIELD
    在一些场景中,有场景A查询出一个已经排好顺序的id,需要到场景B中查询这些,使用mysql中的WHERE**IN(****),查询出来的结果并不是按照传入的list排序的.但是......
  • postgres使用pg_dump/psql导入导出
    准备打开windows下的命令窗口:开始->cmd->安装数据库的目录->进入bin目录;导出pg_dump–hlocalhost–Uusername–p5432–ddb_name–f"D:/test.dmp"可选参数U......
  • postgresql14主备流复制状态查看
    查看同步状态主库使用pg_stat_replication监控流复制postgres=#\xExpandeddisplayison.postgres=#select*frompg_stat_replication;-[RECORD1]----+-----......
  • postgresql14主备流复制状态切换
    pg12开始新增了一个pg_promote()函数,可以通过SQL命令激活备库。pg_promote()语法pg_promote(waitbooleanDEFAULTtrue,wait_secondsintegerDEFAULT60)两个参数:w......
  • MySQL必知必会第十章-创建计算字段
    创建计算字段计算字段计算字段并不实际存在于数据库表中。计算字段是运行时在SELECT语句内创建的。字段(field)基本上与列(column)的意思相同,经常互换使用,不过数据库列一......