MySQL возвращает первую и последнюю запись для последовательных идентичных результатов
Я использую MySQL, и у меня есть таблица с названием «results», в которой хранятся результаты монитора, который определяет, работает ли служба в определенный момент времени.
+-----------+------------+---------------------+--------+
| result_id | service_id | time_stamp | result |
+-----------+------------+---------------------+--------+
| 1 | 1 | 0000-00-00 00:01:00 | down |
| 2 | 1 | 0000-00-00 00:02:00 | up |
| 3 | 1 | 0000-00-00 00:03:00 | up |
| 4 | 1 | 0000-00-00 00:04:00 | up |
| 5 | 1 | 0000-00-00 00:05:00 | down |
| 6 | 1 | 0000-00-00 00:06:00 | down |
| 7 | 1 | 0000-00-00 00:07:00 | up |
| 8 | 1 | 0000-00-00 00:08:00 | down |
| 9 | 1 | 0000-00-00 00:09:00 | up |
| 10 | 2 | 0000-00-00 00:03:00 | up |
+-----------+------------+---------------------+--------+
Я хочу получить таблицу результатов, которая просматривает результаты для данной службы и возвращает время, когда она была впервые записана как отключенная, и последний раз (последовательно), и наоборот, если она была отключена. Это поможет мне записать продолжительность простоя службы.
Результаты, которые я ищу, будут выглядеть так.
Для service_id 1 ...
+-----------------------+---------------------+--------+
| start_time | end_time | result |
+-----------------------+---------------------+--------+
| 0000-00-00 00:01:00 | 0000-00-00 00:01:00 | down |
| 0000-00-00 00:02:00 | 0000-00-00 00:04:00 | up |
| 0000-00-00 00:05:00 | 0000-00-00 00:06:00 | down |
| 0000-00-00 00:07:00 | 0000-00-00 00:07:00 | up |
| 0000-00-00 00:08:00 | 0000-00-00 00:08:00 | down |
| 0000-00-00 00:09:00 | 0000-00-00 00:09:00 | up |
+-----------------------+---------------------+--------+
Я мог бы получить эту информацию на Java или PHP довольно легко, но я бы предпочел использовать SQL-запрос. Мои навыки SQL не особенно продвинуты. Как бы я подошел к этому?