我有兩個不同的表,稱爲觀測值和間隔。SQL計算間隔之間的時間間隔(包括來自單獨表格的時間)
意見:
id | type, | start
------------------------------------
1 | classroom | 2017-06-07 16:18:40
2 | classroom | 2017-06-01 15:12:00
間隔:
+----+----------------+--------+------+---------------------+
| id | observation_id | number | task | time |
+----+----------------+--------+------+---------------------+
| 1 | 1 | 1 | 1 | 07/06/2017 16:18:48 |
| 2 | 1 | 2 | 0 | 07/06/2017 16:18:55 |
| 3 | 1 | 3 | 1 | 07/06/2017 16:19:00 |
| 4 | 2 | 1 | 3 | 01/06/2017 15:12:10 |
| 5 | 2 | 2 | 1 | 01/06/2017 15:12:15 |
+----+----------------+--------+------+---------------------+
我想要將顯示的圖:
observation_id | time_on_task (total time in seconds where task = 1)
1 | 13
2 | 5
因此,我必須首先檢查第一個觀察值是否具有任務= 1,如果是,我必須記錄當前區間和觀察表中的起點之間的差異,然後將其添加到總時間。從那裏開始,如果任務= 1,我只需添加當前時間間隔和上一個時間間隔的時間差。
我知道我可以使用:
select observation_id, TIME_TO_SEC(TIMEDIFF(max(time),min(time)))
from your_table
group by observation_id
找到所有間隔之間的間隔表的總時間的第一個之外。 但是 1.我只需要包括任務= 1的間隔時間。(間隔的結束時間是列出的時間間隔) 2.如果number = 1,需要第一個間隔和初始開始之間的時間延遲(從觀察表)
我不明白你怎麼achive這一結果。你如何獲得這些數據的{13,5}秒? –
16:18:40 - 16:18:48,16:18:55 - 16:19:00,=總共13秒(對於observation_id = 1)。 15:12:10 - 15:12:15 =總共5秒(對於observation_id = 2)。只計算任務= 1的位置。因此,在任務= 1的情況下,我們必須將結束時間與前一時間間隔進行比較,並將這些秒數添加到總計中。 –
但是'07/06/2017 16:18:55'不是任務1 –