sql 查找连续的时间区间以及连续天数
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/
sql 查找连续的时间区间以及连续天数的更多相关文章
- Sql server 查询指定时间区间工作日数、休息日数等日期操作
1.查询指定时间区间的工作日 这个主要难点是法定节假日,国家的法定节假日每年都不一样,还涉及到调休,所以我们设计一个假日表.主要字段有年份,类型(是否调休),假期日期.如下: CREATE TABLE ...
- 通过sql判断时间区间是否存在数据
在做项目的时候遇到过一个问题,用户需要获取当前月或者几个月的数据,但是有一个要求,如果已经存在一张单已经包含了这几个月的数据,那么就不能再提取到重复的数据. 其实这个问题,我做完了我的方式之后才发现, ...
- 牛客练习赛14 B 区间的连续段 (倍增)
链接:https://ac.nowcoder.com/acm/contest/82/B来源:牛客网 区间的连续段 时间限制:C/C++ 7秒,其他语言14秒 空间限制:C/C++ 262144K,其他 ...
- Oracle计算连续天数,计算连续时间,Oracle连续天数统计
Oracle计算连续天数,计算连续时间,Oracle连续天数统计 >>>>>>>>>>>>>>>>> ...
- SPOJ GSS1 && GSS3 (无更新/更新单点,并询问区间最大连续和)
http://www.spoj.com/problems/GSS1/ 题意:无更新询问区间最大连续和. 做法:线段树每个节点维护sum[rt],maxsum[rt],lsum[rt],rsum[rt] ...
- SQL Server查询时添加一列连续的自增列
SQL Server查询时添加一列连续的自增列 在SQL Server数据库中表信息会用到Identity关键字来设置自增列.但是当有数据被删除的话,自增列就不连续了.如果想查询出这个表的信息,并添加 ...
- cdoj844-程序设计竞赛 (线段树的区间最大连续和)【线段树】
http://acm.uestc.edu.cn/#/problem/show/844 程序设计竞赛 Time Limit: 3000/1000MS (Java/Others) Memory L ...
- SQL Server 判定时间是否在某个时间区间内
* FROM sys.objects WHERE name=N'uF_IsRange_Date' AND [type]='FN') DROP FUNCTION uF_IsRange_Date GO S ...
- [Irving]Sql Server 日期、时间、比较
在sql 的数据库表里时间字段是比较全的格式:例如GetdataTime字段:2007-06-05 12:34:50. 但在前台程序里,利用日历控件,可能查询的时候是以某天来做比较,例如开始时间:20 ...
- SQL Server日期和时间的格式
在SQL Server数据库中,SQL Server日期时间格式转换字符串可以改变SQL Server日期和时间的格式,是每个SQL数据库用户都应该掌握的.本文我们主要就介绍一下SQL Server日 ...
随机推荐
- 时隔3个月,Uber 再遭数据泄露...
在今年9月,Uber 就发生过一起数据泄露事件,尽管黑客并无意发动大规模攻击或以此来获取巨额利益,但其成功获取对 Uber 所有敏感服务的完全管理员访问权限仍令人后怕.而在上周,名为"Ube ...
- NeurIPS 2022:基于语义聚合的对比式自监督学习方法
摘要:该论文将同一图像不同视角图像块内的语义一致的图像区域视为正样本对,语义不同的图像区域视为负样本对. 本文分享自华为云社区<[NeurIPS 2022]基于语义聚合的对比式自监督学习方法&g ...
- python 之将xmind转为excel用例文件
1.xmind文件模板如下所示(最后一个子级为预置条件) 2.excel用例模板 3.获取xmind文件数据并转成字典形式 from xmindparser import xmind_to_dict ...
- 2022NewStarCTF新生赛一些比较有意思的题目wp
Misc_蚁剑流量分析 Pcap的文件可以直接使用工具 编辑器打开目录,一个一个看,可以找到eval危险函数 看到n3wst4r,直接使用linux正则匹配,找出相关内容 Url解码,了解一下蚁剑流量 ...
- Java开发学习(四十九)----MyBatisPlus更新语句之乐观锁
1.概念 在讲解乐观锁之前,我们还是先来分析下问题: 业务并发现象带来的问题:秒杀 假如有100个商品或者票在出售,为了能保证每个商品或者票只能被一个人购买,如何保证不会出现超买或者重复卖 对于这一类 ...
- 搭建一个Hexo个人博客系统
0x01 前言 虽然说前两天折腾了一下博客园(自己之前也有做过自己的博客,奈何维护费用太贵了,真的消耗不起,钱要花在刀刃上.) 网上有些教程有些参差不齐,今天给自己的真实搭建过程呈现给大家. 0x02 ...
- 阿里云kafka使用记录(python版本)
kafka端 consumer vpc版代码 import socket from kafka import KafkaConsumer from kafka.errors import Ka ...
- ionic+vue+capacitor系列笔记--02项目中集成Capacitor,添加android,ios平台,真机运行项目
Capacitor是什么? Capacitor是由ionic团队开发的一款跨平台移动应用构建工具,可轻让我们轻松的构建Android.iOS.Electron和Web应用程序. Capacitor是A ...
- Consumer接口-Consumer接口的默认方法andThen
Consumer接口 java.util.function.Consumer<T〉接口则正好与Supplier接口相反,它不是生产一个数据,而是消费一个数据,其数据类型由泛型决定. 抽象方法:a ...
- Java入门与进阶P-3.7+P-3.8
猜数游戏 让计算机来想一个数,然后让用户来猜,用户每输入一个数,就告诉它这是大了还是小了,知道用户猜中为止,最后还要告诉用户它猜了多少次 因为需要不断重复让用户猜,所以需要用到循环 在实际写出程序之前 ...