希望我能在这里找到我的难题的答案。
我在Postgres DB中有两个表,我想重叠到另一个表上。
表A有3列:“开始时间”、“结束时间”和“状态”。在每一行中,开始时间等于前一行的结束时间。
表B具有相同的列,但开头
我想将表B重叠到表A上以创建表C。
表C中每一行的开始时间也等于前一行的结束时间。
下面是一个例子来说明:
表A-受影响者
表B-重叠器
表C重叠的结果
如您所见,如果表B中的行的开始时间在表a中的行时间范围内,则表a中的行的结束时间将替换为表B中的行的开始时间。相反,如果表B中的行的结束时间在表a中的时间范围内,然后,表A中行的开始时间替换为表B中行的结束时间。
其次,如果表A和表B中的开始时间和结束时间完全相同,则B中的行将替换A中的行。
第三,如果表B中一行的时间范围属于表A中一行的时间范围,那么表A行被分成2,第一行的结束时间是表B行的开始时间然后第二行的开始时间将是表B行的结束时间。
最后,必须为时间范围正确保留状态。
是否可以通过postgres sql查询实现这一点?。我没有发现任何类似的问题或答案。
注意:在每个表中也有一个ID列,为了简单起见,我在这里省略了它,但是如果它有助于实现重叠,可以使用它。
一种方法是提取所有开始时间和结束时间,然后在该开始时间提取正确的状态,并使用lead()
获取结束时间:
with t as (
select starttime as tm
from a
union -- on purpose to remove duplicates
select endtime
from a
union
select starttime as tm
from b
union -- on purpose to remove duplicates
select endtime
from b
)
select t.tm, lead(t.tm) over (order by t.tm) as endtime,
(select ab.state
from ((select a.*
from a
) union all
(select b.*
from b
)
) ab
where ab.starttime <= t.tm and t.tm < ab.endtime
order by ab.starttime desc
limit 1
) as state
from t;
我在课堂上创建了两个列表。 其中一个称为预算,包含元素section、month和sum,返回以下内容: [Budzet{sec='AGD/RTV',月='01',和=96},Budzet{sec='AGD/RTV',月='03',和=30},Budzet{sec='食品',月='04',和=23},Budzet{sec='游戏',月='09',和=1084}...] 这是SQL查询 第二个是元素
问题内容: 我确信这个问题以前可能已经被问过,但我似乎找不到正确的答案。如果我有两个清单 我正在尝试使用_list1重新排列_list2中的元素,以便它们完全匹配顺序。什么是最干净的方法?所需的输出: 很抱歉,如果这是重复的,但到目前为止,我只能使用压缩的sorted()方法找到数字列表的答案。 如果_list2是列表列表怎么办? 所需输出: 还有一个假设:如果我想使用_list1作为键对其他任何
我有两个表:< code>person_concern和< code>person。它们都有一个< code >代码列,而< code>person有一个< code>dept列。我想从< code>person_concern表中选择数据,其中< code>person表中的< code>dept列= 30。 基本上,表的每一行都有不同的代码,然后将该人员放入一个部门。因此,我可以在表中使用相同
问题内容: 我需要提取给定窗口的时间序列/数组的所有子序列。例如: 迭代序列的简单方法当然很昂贵,例如: 我发现了一种更好的方法,即复制序列,将其移动一个不同的值直到覆盖窗口,然后使用分割不同的序列。性能大约提高了100倍,因为for循环遍历窗口大小而不是序列大小: 我已经看到pandas在pandas.stats.moment模块中包含多个滚动功能,我想它们的作用在某种程度上类似于子序列问题。该
我试图搜索一个列表包含另一个列表与MongoDB。 我将使用字符串列表进行搜索。假设列表L=[1,2,3,4,5] 例如,对于给定的列表L=[1,2,3,4,5],我希望返回带有_id1和2的文档。3不能返回,因为6不在L中。 我找到了两个解决方案 一 二 由于我想使用Spring Data MongoDb Criterias,我尝试编写上述解决方案,但代码似乎不起作用,它返回所有文档
我有Table1中的数据,Table1是一个包含许多列的大型电子表格 并且我有一个很大的空表2,带有give列名: 某些列名与表1匹配。 如何使用表1中自动匹配重叠列名的数据填充表2?谢谢!