我有两个不同的表,称为观测值和间隔。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 –