У меня есть таблица событий с проектом и отметкой времени. Я хочу запросить все серии последовательных проектов. Если проект выполняется последовательно более одного раза, проект следует указать несколько раз. Я также хотел бы получить время начала и окончания и продолжительность каждой серии.
Пример:
| project | created_at |
|-----------|-------------------------|
| project a | 2020-05-29 10:00:00.000 |
| project a | 2020-05-29 10:00:01.167 |
| project a | 2020-05-29 10:00:03.954 |
| project a | 2020-05-29 10:00:10.055 |
| project b | 2020-05-29 10:05:00.000 |
| project b | 2020-05-29 10:06:01.049 |
| project b | 2020-05-29 10:06:30.197 |
| project a | 2020-05-29 10:07:05.167 |
| project a | 2020-05-29 10:07:18.680 |
Я хотел бы получить следующий вывод:
| project | start | end | duration |
|-----------|-------------------------|-------------------------|--------------|
| project a | 2020-05-29 10:00:00.000 | 2020-05-29 10:00:10.055 | 00:00:10.055 |
| project b | 2020-05-29 10:05:00.000 | 2020-05-29 10:06:30.197 | 00:01:30:197 |
| project a | 2020-05-29 10:07:05.167 | 2020-05-29 10:07:18.680 | 00:00:13.513 |
Пока что у меня есть следующий запрос:
SELECT
project,
created_at AS "Start",
Max(created_at) AS "End",
TIMEDIFF(MAX(created_at), created_at) AS "Duration"
FROM results GROUP BY project;
Это дает мне следующий результат:
| project | start | end | duration |
|-----------|-------------------------|-------------------------|--------------|
| project a | 2020-05-29 10:00:00.000 | 2020-05-29 10:07:18.680 | 00:07:18.680 |
| project b | 2020-05-29 10:05:00.000 | 2020-05-29 10:06:30.197 | 00:01:30:197 |
Проблема в том, что я получаю только два выходы через группу по. Это, в свою очередь, искажает дату начала и окончания, а также продолжительность вывода.
Есть ли способ обойти это, чтобы получить желаемый результат?