我有一个mysql表,其中包含时间序列数据,我想通过值来获取状态中的总时间。
这张table看起来像:
+----------------+---------------------+---------------+------------+
| id | status_update_time | current_state | last state |
+----------------+---------------------+---------------+------------+
| 248 | 2017-02-17 05:00:00 | 1 | 0 |
| 248 | 2017-02-17 02:00:00 | 0 | 1 |
| 248 | 2017-02-17 01:00:00 | 1 | 0 |
| 250 | 2017-02-17 06:00:00 | 0 | 1 |
| 250 | 2017-02-17 05:00:00 | 1 | 0 |
| 252 | 2017-02-17 06:00:00 | 0 | 2 |
| 252 | 2017-02-17 03:00:00 | 2 | 0 |
| 254 | 2017-02-17 03:00:00 | 0 | 1 |
| 254 | 2017-02-17 02:00:00 | 1 | 0 |
| 254 | 2017-02-17 01:00:00 | 0 | 1 |
| 254 | 2017-02-17 00:00:00 | 1 | 2 |
+----------------+---------------------+---------------+------------+
我想要的预期结果是:
+----------------+---------------------+----------------+
| id | state | time_in_seconds|
+----------------+---------------------+----------------+
| 248 | 0 | 10800 |
| 248 | 1 | 3600 |
| 250 | 1 | 3600 |
| 252 | 2 | 10800 |
| 254 | 0 | 7200 |
| 254 | 1 | 7200 |
+----------------+---------------------+----------------+
编辑:我还不能生成第二个表,但我想。
生成第二个表的逻辑将是id 248,状态1为3600秒,状态0为10800秒。这是因为从2017-02-17 01:00:00到2017-02-17 02:00:00处于1状态,然后从2017-02-17 02:00:00到2017-02-17 05:00:00处于0状态,然后更改为1状态。
1条答案
按热度按时间m528fe3b1#
您可以在这里查看:http://sqlfiddle.com/#!9月6日8439/38