请教一个 SQL 查询

2021-12-14 15:40:02 +08:00
 Morii
我有一张故障表

里面有 N 条故障信息,每条信息上记录着故障的开始结束时间

同一时间是有多个故障发生的

需要使用 SQL 查询全年故障时长

突然就不会写了


--------------------


如果是代码的话,我会考虑 bitset 或者过滤器实现,计算每一秒是否有故障然后求和

如果直接用 sql 写,有什么比较好的查询方式吗?
1156 次点击
所在节点    问与答
8 条回复
ZzhRen
2021-12-14 15:43:49 +08:00
直接故障结束时间-开始时间 然后 sum 起来
Morii
2021-12-14 15:46:14 +08:00
@ZzhRen #1

你这里没考虑多个故障会在同一时间发生的问题。。
deplivesb
2021-12-14 15:53:07 +08:00
@Morii 所以同时出现的两个故障你是想算成一个故障计时还是展开计时
Morii
2021-12-14 16:03:52 +08:00
@deplivesb #3

一个计时
liufude66
2021-12-14 16:32:39 +08:00
递归,查询全年第一次发生故障的开始时间和结束时间 1a,1b ,@接着查询故障早于 1b 的数据。如果这样的的数据存在,那么取故障结束的时间做为新的 1b ,递归下去;如果这样的数据不存在,1a-1b 的时间计入,则查询故障开始时间晚于 1b ,取开始时间最早的数据开始结束时间作为 2a ,2b,重复前面 @处开始的步骤,递归下去。
umissthestars
2021-12-14 17:24:15 +08:00
取出来处理吧,真打算大力 io 出奇迹吗
RRRoger
2021-12-15 08:01:55 +08:00
取出来自己写逻辑
startisan
2021-12-15 15:05:59 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/822141

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX