我在SQL Server中有以下表。我想查找计算机运行的最长持续时间。
| 行|日期时间|机器开启|
| - ------|- ------|- ------|
| 1个|2022年9月22日8时20分|1个|
| 第二章|2022年9月22日9时10分|无|
| 三个|2022年9月22日10时40分|1个|
| 四个|2022年9月22日10时52分|无|
| 五个|2022年9月22日12时30分|1个|
| 六个|2022年9月22日14时30分|无|
| 七|2022年9月22日15时|1个|
| 八个|2022年9月22日15时40分|无|
| 九|2022年9月22日16时25分|1个|
| 十个|2022年9月22日16时55分|无|
在上面的示例中,使用第5行和第6行,计算机处于ON状态的最长持续时间为2小时。在给定的时间范围内,可以提供最长持续时间的最佳SQL语句是什么?
- 预期结果:**
60分钟
我已经研究了SQL中的LAG函数和LEAD函数。
4条答案
按热度按时间ddrv8njm1#
如果这真的是您的数据,您可以简单地使用
INNER JOIN
和DATEDIFF:0ejtzxu12#
这是间隙和岛问题,解决它的一个选项是使用每当machine_on = 0时增加1的运行和,这将为后跟0的连续1定义唯一组。
See demo
ubof19bj3#
下面是另一种使用传统差距和孤岛方法的方法:
n6lpvg4x4#
这是一个经典的差距和岛屿有点扭曲
Adj