gpt4 book ai didi

mysql - 查找多个日期之间的时间间隔 - Kettle

转载 作者:行者123 更新时间:2023-11-30 22:19:56 26 4
gpt4 key购买 nike

我需要找到多个开始结束日期行之间的间隔(每个 PK 最多可以有 4 行)。我输入了组合 PK - 开始日期 - 结束日期,我需要以某种方式检查这些日期之间是否有任何间隔。例如:

PK          Start                    End
1 2016-01-01 00:00 2016-01-01 11:00
1 2016-01-01 10:00 2016-01-01 21:00
1 2016-01-01 13:00 2016-01-01 16:00
1 2016-01-01 18:00 2016-01-01 21:00
2 2016-01-01 11:00 2016-01-01 12:00
2 .......................

我尝试使用 Kettle 中的分析步骤来获取前一行的结束日期,然后将其与当前行的开始日期进行比较,但这不会成功,因为时间可能重叠,或者如例如,如果我比较第 3 行和第 4 行,它会报告错误,即使时间被第 2 行覆盖。所以我需要一个解决方案来比较所有具有相同 PK 的行,并检查之间是否存在时间间隔他们。我试图创建一些 Kettle 转换/作业或 MySQL 查询,但我似乎无法做到这一点。有什么想法/建议吗?

编辑:现在我正在尝试这样的事情(简化):

SELECT t.id, t.start,t.end, max(t2.end)
FROM t, t t2
WHERE t2.start <= t.start
GROUP BY t.pk

但现在的问题是,对于 Max,每次 PK 我只能返回一行。我需要“运行最大值”。这背后的想法是为每个 PK 组获取到目前为止的最大结束日期,并将其与开始日期进行比较(如果结果 >= 0,则没有差距)。因此,对于之前的示例:

PK          Start                    End                 MAX
1 2016-01-01 00:00 2016-01-01 11:00 2016-01-01 11:00
1 2016-01-01 10:00 2016-01-01 21:00 2016-01-01 21:00
1 2016-01-01 13:00 2016-01-01 16:00 2016-01-01 21:00
1 2016-01-01 18:00 2016-01-01 21:00 2016-01-01 21:00
2 2016-01-01 11:00 2016-01-01 12:00 2016-01-01 12:00
2 .......................

再一次,知道如何让它正常运行吗?谢谢。

最佳答案

我建议您使用 having for the max .. min delta e the sum (total) of the parts .. 进行检查。

 select pk, max(end) - min(start) as delta , sum(start - end) as tot
from my_table
goup by pk
having delta - tot > 0

最终你也可以管理一点宽容..

关于mysql - 查找多个日期之间的时间间隔 - Kettle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36939256/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com