如何编写SQL查询计算指定DateTime区间内的房间可见/机器工作时长
场景1:统计房间可见状态时长
某房间内有数量不定的灯泡随机开关,每次灯泡启停会在表中记录LightBulbId、TurnedOn、TurnedOff字段。需编写查询语句,统计指定DateTime区间内房间处于可见状态(至少一个灯泡点亮)的时长(格式为HH.mm.ss)。
示例数据
| LightBulbId | TurnedOn | TurnedOff |
|---|---|---|
| 1 | 2022-10-01 06:00:00 | 2022-10-01 11:00:00 |
| 2 | 2022-10-01 07:00:00 | 2022-10-01 10:00:00 |
| 3 | 2022-10-01 08:00:00 | 2022-10-01 09:00:00 |
| 4 | 2022-10-01 12:00:00 | 2022-10-01 13:00:00 |
| 5 | 2022-10-01 14:00:00 | 2022-10-01 15:00:00 |
示例结果
在2022-10-01 06:00:00至2022-10-01 15:00:00区间内,总时长9小时,房间可见时长为7小时。
规则说明
- 灯泡点亮时长可超过24小时;
- 示例采用1小时增量仅为简化展示;
- 至少一个灯泡点亮时,房间处于可见状态;
- 灯泡点亮后房间立即可见,全部熄灭后则不可见。
场景2:统计机器实际工作时长
某机器允许多人同时操作,每次人员启停操作会记录StartTime、EndTime字段。需统计指定时间区间内机器的实际工作时长。
内容的提问来源于stack exchange,提问作者kidbabic
相关产品推荐
相关产品推荐

