如何在MySQL中计算各ID每日的离线状态时长?
问题:计算MySQL中ID的每日离线时长及优化方案
我有一个MySQL表,结构如下:
| idpk | id | status | timestamp |
|---|---|---|---|
| 1 | 43857 | AVAILABLE | 2023-01-07 09:14:19 |
| 2 | 43857 | OFFLINE | 2023-01-07 18:14:19 |
| 3 | 43857 | AVAILABLE | 2023-01-07 23:14:19 |
| 4 | 43860 | AVAILABLE | 2023-01-08 09:14:19 |
| 5 | 43860 | OFFLINE | 2023-01-08 18:14:19 |
| 6 | 43860 | AVAILABLE | 2023-01-08 22:14:19 |
| 7 | 43857 | OFFLINE | 2023-01-08 23:14:19 |
该表用于追踪多个id的状态变更,我的目标是计算每个ID在24小时内的离线时长,计算规则为:从OFFLINE状态到下一个AVAILABLE状态的时间间隔。例如:
id -> 43857 在2023-01-07的离线时长为5小时。
id -> 43860 在2023-01-08的离线时长为4小时。
目前我通过Python实现此需求:选取24小时内的相关记录,计算后将离线时长存入另一张表。想了解以下内容:
- 是否有更优方案,比如直接用SQL实现?
- 优化MySQL数据存储方式的建议,以便简化计算。
- 找到一个相关的Stack Overflow问题,希望有人能解释其中的查询语句。
内容的提问来源于stack exchange,提问作者chrs04
相关产品推荐
相关产品推荐

