关于sql统计时间重叠和时间不重叠的问题

我们在开发过程中总会遇到这样的情况,一行数据中,有id、组、开始时间、结束时间。但是开始时间和结束时间肯定会出现时间重叠问题,比如说下面这种情况。

我们先找出时间重叠的公式:

可以发现:

公式如下:

a.alarm_type_id = b.alarm_type_id                   AND
a.start_time <= b.stop_time                             AND
a.stop_time >= b.start_time                             AND
a.id <> b.id

详细的sql语句:

selectDISTINCT b.*
from`time_table` a,`time_table` b
wherea.id <> b.id                                         ANDa.alarm_type_id = b.alarm_type_id                ANDa.start_time <= b.stop_time                      ANDa.stop_time >= b.start_time

查询出时间不重叠的数据:

select *
from time_table a
where a.id not in  (select DISTINCT b.id from `time_table` a,`time_table` b where a.id <> b.id                                    ANDa.alarm_type_id = b.alarm_type_id               ANDa.start_time <= b.stop_time                      ANDa.stop_time >= b.start_time    );

统计重叠时间的方法,我们可以先分组,然后获取分组后的数据的最小时间和最大时间,之后做差就能求出时间和。

selectalarm_type_id,  UNIX_TIMESTAMP(MAX(k1.stop_time))-UNIX_TIMESTAMP(MIN(k1.start_time))
from (selectDISTINCT b.*from`time_table` a,`time_table` bWHEREa.id <> b.id                                 ANDa.alarm_type_id = b.alarm_type_id            ANDa.start_time <= b.stop_time                  ANDa.stop_time >= b.start_time
) k1  group by k1.alarm_type_id;

统计不重叠时间的方法。

select alarm_type_id, sum(UNIX_TIMESTAMP(stop_time) - UNIX_TIMESTAMP(start_time)) time_sum
from (select *from time_table awhere a.id not in  (select DISTINCT b.id from `time_table` a,`time_table` b where a.id <> b.id                                    ANDa.alarm_type_id = b.alarm_type_id                 ANDa.start_time <= b.stop_time                      ANDa.stop_time >= b.start_time    )
) k2 group by alarm_type_id;

接下来可以直接整合统计,没什么难度,直接两条语句连起来。然后分组查询,进行sum。

问题:

会出现存在本周第一天和上周最后一天存在跨天的情况,可以直接截取进行统计。

关于sql语句中,统计时间重叠和时间不重叠相关推荐

  1. 转在同一个sql语句中如何写不同条件的count数量

    今天在做Portal中的Dashboard展现的时候,需要对多个统计字段做展现,根据我现在的掌握水平,我只能在sql调用构建器中实现一种sql语 句返回的resultSet做展现.没有办法,只能从数据 ...

  2. groovy怎样从sql语句中截取表名_sql注入mysql篇

    SQL注入 __0x01 ♛Sql注入原理 Sql注入顾名思义是没有对用户输入的参数进行过滤导致测试者可以将一段非正常语句插入到查询语句中,由web应用带入到数据库中执行,从而读取数据库中的数据. _ ...

  3. SQL语句中的select高级用法

    #转载请联系 为了更好的了解下面的知识点,我们先创建两张表并插入数据. # 学生表 +----+-----------+------+--------+--------+--------+------ ...

  4. sql语句中as的用法和作用

    最近做项目中,偶然发现在SQL语句中出现了as这个词,一直以来没怎么关注是什么意思,毕竟影响不大,今天有空,就在网上查了一些资料,大概有了一些的了解 我们的Sql语句在很多数据库中都是通用的,比如像M ...

  5. MySQL中修改表结构的关键字_下列SQL语句中,修改表结构的关键字是

    [单选题]对<将进酒>全诗分析不正确的是 [单选题]下列划线词语的解释有误的一项是 [多选题]下列食品属于不完全蛋白质的是 ( ) . [单选题]下列聚合函数中属性列必须是数值型的是 [单 ...

  6. UNION,EXISTS,IN等在SQL语句中的灵活应用和场境的选择。

    今天在QQ群里,有朋友问我这样的一个SQL Server中查询数据的问题, 表 A: num       unit 001        a 002        b 003        c 表 B ...

  7. 本地可以使用oracle吗,Oracle - PLS-00642:SQL语句中不允许使用本地集合类型

    我是ORACLE编程中的新手,我试图将表列值与传入的数组进行比较,并且我在此过程中遇到了相当令人沮丧的时间.Oracle - PLS-00642:SQL语句中不允许使用本地集合类型 这是来自包头的类型 ...

  8. mysql sql dateadd_在SQL语句中DATEADD和DATEDIFF函数

    在SQL语句中DATEADD和DATEDIFF函数 DateAdd函数 返回 返回包含一个日期的 Variant (Date),这一日期还加上了一段时间间隔. 语法 DateAdd(interval, ...

  9. Sql语句中的DDL、DML、DCL的介绍

     一.DDL DDL is Data Definition Language statements. Some examples:数据定义语言,用于定义和管理 SQL 数据库中的所有对象的语言 1.C ...

最新文章

  1. Linux的19 个装B的命令,记得搂一遍!!!
  2. jquery很好的学习网站
  3. 90.386(32位)的保护模式 (286是过渡24位) 91.什么是实模式
  4. C# DirectX编程对基本三角形应用平移变换矩阵
  5. 图解+笔记-python语言-第5章:数字/5.3 内置数字工具/5.3.2 内置数学函数
  6. mybatis字符串转成数字_Python字符串三种格式化输出
  7. matlab在常微分方程的应用,MATLAB在常微分方程上应用.ppt
  8. stm32F103驱动ADS1115程序-4通道可用-ALERT中断可用-ADC芯片,应该是最全了
  9. php错误日志分析_php错误日志
  10. 远程桌面无法连接方案
  11. win7x64 连接oracle 客户端 vs 2010调试 提示“ORA-12154: TNS: 无法解析指定的连接标识符 ”
  12. 微pe工具箱有linux版吗,微PE工具箱
  13. Web初学-2022.10.22-27
  14. MessageBox用法大全
  15. 图书管理系统数据库SQL设计思路
  16. 【JY|理念】结构概念设计之(设计理念进展)
  17. 【面试技巧】十大面试必胜绝招
  18. 超详细的bat脚本常用命令及亲测示例
  19. 服务器sever2008如何取消IE增强安全配置
  20. 第2关:求解出n以内所有能被5整除的正整数的乘积-------C语言程序设计技术(循环结构程序设计1)

热门文章

  1. SQL 去除重复数据 UNION all 和UNION 的用法
  2. “芯”机遇!百能云芯诚邀您共聚慕尼黑上海电子展!| 百能云芯
  3. OpenLayers-Editbar控件
  4. axios拦截器 config_vue中axios拦截器的使用
  5. 程序员电脑族喝什么茶对身体好?
  6. 录制的视频有噪音,后期可以降噪吗
  7. 解决Frida hook某些App,明明包名写对了,却找不到进程
  8. 浏览器和服务器的交互流程
  9. Heap-Organized table 和 Index-Organized table 说明
  10. C#开发身份证信息管理系统之登陆