基于重叠范围的SQL组行

f14ka

我有几个信号,它们会在一天中的随机时间打开和关闭。我该如何为所有这些对象选择一般情况下它们的开启和关闭方式,以便获得重叠的图片。在下面的图像中,我们有列signal_id(1,2),每行都有start_datetime和end_datetime的行。我们需要图像中红色的结果。

在此处输入图片说明

D B:

在此处输入图片说明

所需结果:

在此处输入图片说明

戈登·利诺夫

这就是所谓的“空白与孤岛”问题。这是一个非常普遍的情况,因此我建议使用累积最大值来确定是否存在重叠:

select min(start_date), max(end_date)
from (select t.*,
             sum(case when prev_end_date >= start_date then 0 else 1 end) over (order by start_date) as grp
      from (select t.*,
                   max(end_date) over (order by start_date rows between unbounded preceding and 1 preceding) as prev_end_date
            from t
           ) t
      ) t
group by grp;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

重叠基因组范围

来自分类Dev

基于SQL(Oracle)中预定义的日期范围的组记录

来自分类Dev

基于IP范围的动态组

来自分类Dev

基于开始和结束的 MS SQL 组行

来自分类Dev

Oracle:用于删除基于组的重复行的 sql 查询

来自分类Dev

创建基于sql视图的范围转换为行

来自分类Dev

SQL选择重叠行

来自分类Dev

基于范围/角色/组的访问控制

来自分类Dev

日期范围和一组其他日期范围之间的重叠重叠天数

来自分类Dev

SQL-返回当前选择的日期范围不与先前选择重叠的行

来自分类Dev

SQL-返回当前选择的日期范围不与先前选择重叠的行

来自分类Dev

根据日期在组内拆分重叠行

来自分类Dev

R基于重叠/相交的行创建集群

来自分类Dev

R基于重叠/相交的行创建集群

来自分类Dev

选择没有日期范围重叠的行

来自分类Dev

根据重叠的基因组范围合并数据框

来自分类Dev

范围按组以及年份之间重叠/相交

来自分类Dev

在PL / SQL中查找重叠范围

来自分类Dev

在SQL中查找日期范围重叠的记录

来自分类Dev

Vim行范围基于搜索

来自分类Dev

SQL查询以基于组的结果

来自分类Dev

SQL分组交叉/重叠行

来自分类Dev

重叠范围检查重叠

来自分类Dev

隐藏基于组的ssrs中的行

来自分类Dev

MySQL:范围基于外部表中的行

来自分类Dev

MySQL:范围基于外部表中的行

来自分类Dev

基于序列的SQL Server 2008组

来自分类Dev

基于组数的SQL Server窗口分页

来自分类Dev

MySQL合并具有重叠日期范围的表行