点击关注上方“SQL数据库开发”,

设为“置顶或星标”,第一时间送达干货

SQL专栏

SQL基础知识第二版
SQL高级知识第二版

问题描述

时间重叠指上下两行数据的时间段有重叠部分,现在要找出这些在时间上有重叠的记录。

具体问题

有7个会议室,每个会议室每天都有人开会,某一天的开会时间如下:

查询出开会时间有重叠的是哪几个会议室?上面预期结果是 ID 2 3 4 5 6

问题分析

为了方便分析,我们画了如下一个草图来具体描述。

图中上面部分t和下面部分b有一段是重复的,分别是b.starttime到t.endtime部分。通过数学集合的思想,我们可以得出这个重叠部分的集合关系。

t.starttime<=b.endtime

AND t.endtime>=b.starttime

上面这个数学集合的重叠部分就是我们要的找的。

具体解法

--创建测试数据
WITH Meeting AS(
SELECT 1 ID,'08:00' Starttime,'09:15' Endtime
UNION ALL
SELECT 2,'13:20','15:20'
UNION ALL
SELECT 3,'10:00','14:00'
UNION ALL
SELECT 4,'13:55','16:25'
UNION ALL
SELECT 5,'14:00','17:45'
UNION ALL
SELECT 6,'14:05','17:45'
UNION ALL
SELECT 7,'18:05','19:45')--查询代码
SELECT DISTINCT b.* FROM Meeting t
JOIN Meeting b ON
t.Starttime<=b.Endtime
AND t.Endtime>=b.Starttime
AND b.ID <> t.ID --排除与自身时间相等的值

结果如下:

有兴趣的小伙伴可以动手做一下,兴许下次面试就遇到了。

最后给大家分享我写的SQL两件套:《SQL基础知识第二版》《SQL高级知识第二版》的PDF电子版。里面有各个语法的解释、大量的实例讲解和批注等等,非常通俗易懂,方便大家跟着一起来实操。

有需要的读者可以下载学习,在下面的公众号「数据前线」(非本号)后台回复关键字:SQL,就行

数据前线

后台回复关键字:1024,获取一份精心整理的技术干货

后台回复关键字:进群,带你进入高手如云的交流群

推荐阅读
  • 常见SQL面试题知识点

  • SQL 中的行转列和列转行

  • 全网最全 Python 操作 Excel库总结!(文末送书)

  • 996加班累到肺部切除,维权之路

  • MySQL 常用脚本

SQL中的时间重叠问题相关推荐

  1. SQL 中循环、for循环、游标

    我们使用SQL语句处理数据时,可能会碰到一些需要循环遍历某个表并对其进行相应的操作(添加.修改.删除),这时我们就需要用到咱们在编程中常常用的for或foreach,但是在SQL中写循环往往显得那么吃 ...

  2. SQL中的case when then else end用法

    2019独角兽企业重金招聘Python工程师标准>>> Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sexWHEN '1' THEN ...

  3. 在SQL中使用CRL函数示例

    在SQL中使用CRL函数 实验目标: 1. 在SQL中创建CRL函数,使之能够向指定的计算机发送消息 实验步骤 2. 在VS中创建类发送消息的类 3. 将以下代码黏贴进去 using System; ...

  4. pl/sql中三种游标循环效率对比

    pl/sql中三种游标循环效率对比 - Oracle数据库栏目 - 红黑联盟 http://www.2cto.com/database/201307/224636.html 转载于:https://b ...

  5. SQL中内连接、外连接、交叉连接

    SQL中内连接.外连接.交叉连接 SQL连接可以分为内连接.外连接.交叉连接. 数据库数据:            book表                                      ...

  6. 简单介绍SQL中ISNULL函数使用方法

    这篇文章介绍了SQL Server.MySQL.Oracle三种数据库中ISNULL函数的使用方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 SQL Ser ...

  7. SQL 中left join ,inner join,right join的区别

    2019独角兽企业重金招聘Python工程师标准>>> sql中存在有左连接  插入 右连接 sql语句 left join ,inner join,right join 进行 wh ...

  8. 什么是存储过程?什么是触发器?SQL中存储过程与触发器的区别是什么?

    什么是存储过程?什么是触发器?SQL中存储过程与触发器的区别是什么? 存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名 ...

  9. SQL中where与having的区别

    SQL中where与having的区别 目录 SQL中where与having的区别 创建表 插入数据 进行聚合操作 # WHERE是在聚合之前进行数据行的过滤而HAVING实在聚合之后进行新数据的过 ...

最新文章

  1. 【组队学习】【34期】阿里云天池在线编程训练营
  2. DOCKER上运行DOTNET CORE
  3. MPEG4 H.264学习笔记之三 ------ 熵编码
  4. 语音识别学习日志 2019-7-17 语音识别基础知识准备6 {维特比算法(Viterbi Algorithm)}
  5. 判断数组是否有重复值
  6. xadmin与mysql数据库_django和xadmin打造后台管理系统(一)-xadmin安装及使用
  7. linux网卡备份还原,CentOS6.x双网卡采用主-备份策略绑定(bond)
  8. Linux 查看 硬件配置
  9. HTML input控件
  10. Java简单小项目---网上订餐系统
  11. delphi 人脸比对_比较好的开源人脸识别软件有哪些?
  12. 简单说from_tensor_slices()函数
  13. php ansiix99mac,华擎推出X99E-ITX/ac主板,终于可以把Haswell-E装进小钢炮
  14. c语言编译器中输出虚线,请教:c语言中用什么命令画虚线
  15. 如何写互联网产品分析报告
  16. 未来的计算机绘画图片,电脑绘画——为想象力插上科技的翅膀 二十中附校科技社团电脑绘画作品展...
  17. C#-快递鸟电子面单打印API
  18. 金蝶EAS,KSQL,执行数据库方言
  19. iOS App处于后台/被杀死的状态仍可进行语言播报的实现 (适配iOS12.1 ,iOS15的本地通知功能)
  20. matlab死亡时间推测实验,尸检——关于死亡时间推测的基本手法及操作方式

热门文章

  1. C语言编程连续换行输入问题
  2. Java中Char占用几个字节???
  3. 高跟鞋多少厘米的适合?
  4. 军队文职丨试用期薪资7200起,转正过万!军队编制,六险两金+各项福利!了解一下!
  5. UnicodeASCII中双向控制字符 U+202D和U+202C
  6. Java数据结构——邻接矩阵+邻接表
  7. JavaScript--【JS】基础语法
  8. 编程语言习题集(2)
  9. 卷积神经网络计算题试题_卷积神经网络算法实例
  10. C# 阿里云服务器的对象云存储OSS的上传下载删除-给OSS做个可是化界面