Как узнать общее время, затраченное каждым id
.
- Должно быть одно действие в течение часа (после начала одного действия),
- и если есть какие-либо действия до истечения 1 часа времени, учитывайте это время в предыдущем слоте, рассчитайте разницу во времени.
- если 1 час уже прошел, теперь проверьте, есть ли какие-либо другие действия в течение 1 часа
Пример данных:
create table test (
id integer not null,
ts datetime not null
);
insert into test values (1, '2012-01-01 08:00');
insert into test values (1, '2012-01-01 08:01');
insert into test values (1, '2012-01-01 08:06');
insert into test values (1, '2012-01-01 08:30');
insert into test values (1, '2012-01-01 09:35');
insert into test values (1, '2012-01-02 16:10');
insert into test values (1, '2012-01-02 16:20');
insert into test values (1, '2012-01-03 06:40');
insert into test values (1, '2012-01-03 06:41');
insert into test values (2, '2012-01-01 08:30');
insert into test values (2, '2012-01-01 09:26');
insert into test values (2, '2012-01-01 10:25');
Выходной столбец будет:
insert into test values (1, '2012-01-01 08:00');
insert into test values (1, '2012-01-01 08:01');
insert into test values (1, '2012-01-01 08:06');
insert into test values (1, '2012-01-01 08:30');
Здесь различия точно такие: 00: 30: 00
, и есть запись, которая, но это через 1 час, поэтому мы не добавляли это действие в предыдущий слот, и в течение 1 часа с этого времени нет активности, поэтому мы не рассмотрим это действие
insert into test values (1, '2012-01-01 09:35');`
Теперь это выполняется для: 00: 10: 00
insert into test values (1, '2012-01-02 16:10');
insert into test values (1, '2012-01-02 16:20');
Точно так же это выполняется для 00: 01: 00
insert into test values (1, '2012-01-03 06:40');
insert into test values (1, '2012-01-03 06:41');
Таким образом, общее время для id=1
будет 00:41:00
.
id | Time duration (hh:mm:ss)
1 | 00:41:00
2 | 01:55:00
Я не мог придумать, как с Если вы решите эту проблему, любое возможное начало будет оценено. Спасибо!