Obtenga el intervalo de tiempo total de varias filas si la secuencia no se rompe

Yo tengoWork yPerson tablas (estos son solo ejemplos para entender el problema).

EstructurWork mes
id INTEGER
person_id INTEGER
dt_from DATETIME
dt_to DATETIME
Person mes
person_id INTEGER
name VARCHAR(50)
DatoWork mes
id | person_id | dt_from    | dt_to
-------------------------------------------------
1  | 1         | 2011-01-01 | 2011-02-02
2  | 1         | 2011-02-02 | 2011-04-04
3  | 1         | 2011-06-06 | 2011-09-09
4  | 2         | 2011-01-01 | 2011-02-02
5  | 2         | 2011-02-02 | 2011-03-03
....etc.
Person mes

Solo nombres de personas con ID de persona

Rendimiento esperad
Person 1 : 2011-01-01 - 2011-04-04
Person 1 : 2011-06-06 - 2011-09-09
Person 2 : 2011-01-01 - 2011-03-03

Interval debe estar en secuencia. No se puede romper en algún lugar en el medio. Es por eso que la Persona 1 tiene dos intervalos.

Estoy usando postgres si cambia algo. ¿Tienes algo? Quería hacerlo en una consulta, pero si no existe tal solución, haré una combinación de intervalos en php.

Respuestas a la pregunta(2)

Su respuesta a la pregunta