- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我一直在努力解决 SQL 中的一些棘手问题,我需要从事件间隔推断 Assets 利用率,并且刚刚了解了 Allen's Interval Algebra ,这似乎是解决这些问题的关键。
代数描述了 13 种区间之间的关系,下图显示了前七种,其余为倒数(即 y 在 x 之前,y 与 x 等)
但我无法找到如何实现相关操作。
根据我的示例数据,我如何才能从 SQL 或 PLSQL 中的以下三种类型的操作中获取结果?
请查看我的 SQLFiddle 链接:http://sqlfiddle.com/#!4/cf0cc
start end width
[1] 1 12 12
[2] 8 13 6
[3] 14 19 6
[4] 15 29 15
[5] 19 24 6
[6] 34 35 2
[7] 40 46 7
我想要一个从上面的数据中返回不相交集
的查询,其中所有重叠间隔都被分解成行,因此不存在重叠。
我该如何处理这个 SQL?
start end width
[1] 1 7 7
[2] 8 12 5
[3] 13 13 1
[4] 14 14 1
[5] 15 18 4
[6] 19 19 1
[7] 20 24 5
[8] 25 29 5
[9] 34 35 2
[10] 40 46 7
我该如何减少/拉平间隔,这样它们是:
对于我的例子,这看起来像:
start end width
[1] 1 29 29
[2] 34 35 2
[3] 40 46 7
另外,我如何找到差距?
start end width
[1] 30 33 4
[2] 36 39 4
最佳答案
这是一个SQLFiddle demo首先创建临时表以简化查询,尽管您可以将这些创建查询放入最终查询中并在没有临时表的情况下执行:
create table t as select * from
(
select null s ,"start"-1 as e from data
union all
select "start" s,null e from data
union all
select "end"+1 s ,null e from data
union all
select null s ,"end" e from data
) d where exists (select "start"
from data where d.s between data."start" and data."end"
or d.e between data."start" and data."end"
);
--Operation 1 - Disjoined Result
create table t1 as select s,e,e-s+1 width from
(
select distinct s,(select min(e) from t where t.e>=t1.s) e from t t1
) t2 where t2.s is not null and t2.e is not null;
--Operation 2 - Reduced Result
create table t2 as
select s,e,e-s+1 width from
(
select s,(select min(d2.e) from t1 d2 where d2.s>=d.s and not exists
(select s from t1 where t1.s=d2.e+1) ) e
from
t1 d where not exists(select s from t1 where t1.e=d.s-1)
) t2;
--Temp table for Operation 3 - Gaps
create table t3 as
select null s, s-1 e from t2
union all
select e+1 s, null e from t2;
现在这里是查询:
--Operation 1 - Disjoined Result
select * from t1 order by s;
--Operation 2 - Reduced Result
select * from t2 order by s;
--Operation 3 - Gaps
select s,e,e-s+1 width
from
(
select s,(select min(e) from t3 where t3.e>=d.s) e from t3 d
) t4 where s is not null and e is not null
order by s;
关于sql - Allen 在 SQL 中的区间代数运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12069082/
我已经将一些变量声明为 bool 值,我希望 C++ 在我进行一些 bool 加法时知道该做什么,但它并没有按照我希望的方式发生。我如何让它工作。 #include using namespace s
我正在创建小型配置文件查看器,我想在 SQL 中模拟环。怎么运行的?对于简单:我的 table 上有 5 个用户。当我从中间获得一个到我的实验(如用户编号 2、3、4)时,下一个和上一个用户是 CUR
我计划使用低级 API 实现 FUSE 文件系统,目前正在尝试了解 fuse_entry_param结构体。 不知道是什么unsigned long fuse_entry_param::generat
从事 JS 工作,刚刚开始学习 boolean 代数。想知道是否有办法简化这个表达式: (!variableOne || !variableTwo) 我记得听说过两个“not”意味着你可以改变符号,但
我有这个 F-代数 (introduced in a previous question),我想在它上面施放一个有效的代数。通过绝望的试验,我设法组合了一个有效的 monadic catamorphi
我在 Google 上到处寻找德摩根定律的 bool 代数(不是集合论)证明,但找不到。 Stack Overflow 也缺少 DeMorgan 定律问题。 作为我的 CIS 251 类(class)
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
正在解决这个问题。 验证闰年的基本规则如下: - 大多数能被4整除的年份都是闰年。 - 异常(exception):世纪年不是闰年,除非它们可以被 400 整除。 这就是答案: if(y%4==0 &
假设算法的最坏情况运行时间可以描述为: T(n) = O(n) + O(r^2) + O(n-r) n 是输入大小,r 是根据算法创建分区的索引。 这个等式可以进一步简化吗?如果变量都是 n 那么它将
有没有办法在 JS 中使用 bool 代数? 例如,我想遍历一个包含 true 和 false 的数组,并将其简化为只有 true 或 false。 用 bool 代数来做这件事似乎是一种优雅的方式.
假设我有两个数据框 df1 df2 我可以加入 df1_keys 和 df2_keys。 我想做的事: (A-B) (A-B) U (B-A) A=df1 和 B=df2。 根据我在 document
这个问题已经有答案了: How can I remove a flag in C? (3 个回答) How to set, clear, and toggle a single bit? (27 个回
大家 我实现了自定义聚合 pig UDF。UDF 实现了 Algebraic 接口(interface),并且有 3 个类 - Initial、Intermed 和 Final 在不同阶段进行工作。它
我想制作一个 bool 向量,它是通过比较两个输入 bool 向量创建的。我可以使用 for 循环,但有更好的方法吗? 我理想的解决方案是这样的: df['A'] = [True, False, Fa
我想编写一个 pig 代码来执行分组并生成 31 个字段的总和,但在此之前我需要做一些自定义处理,为此我编写了一个 eval 函数。我想如果我可以将 GROUP 和 SUM 操作包含到 UDF 中,我
我试图通过 boolean 代数来理解使用 4 个与非门如何等同于 1 个异或门。 如果我们从维基百科看这张图片 http://en.wikipedia.org/wiki/XOR_gate#Alter
我是一名优秀的程序员,十分优秀!