Tengo una tabla donde he datetimes asociado con un ID:Seleccionar TimeRange común más larga
┌────────────────┬──────────────────────┐
│ location_id | datetime |
├────────────────┼──────────────────────┤
│ 200333 | 2008-01-01 00:00:00 |
│ 200333 | 2008-01-01 01:00:00 |
│ 200333 | 2008-01-01 02:00:00 |
| ... | ... |
│ 200333 | 2009-10-23 21:00:00 |
│ 200333 | 2009-10-23 22:00:00 |
│ 200333 | 2009-10-23 23:00:00 |
│ 200768 | 2008-06-01 00:00:00 |
│ 200768 | 2008-06-01 01:00:00 |
│ 200768 | 2008-06-01 02:00:00 |
| ... | ... |
│ 200768 | 2009-12-31 00:00:00 |
│ 200768 | 2009-12-31 00:00:00 |
│ 200768 | 2009-12-31 00:00:00 |
└────────────────┴──────────────────────┘
¿Cuál sería la manera de seleccionar el período de tiempo más largo de estos dos superpuestas location_id
's cuota? En este caso, la salida deseada sería:
┌──────────────────────┬──────────────────────┐
│ start | end |
├──────────────────────┼──────────────────────┤
│ 2008-06-01 00:00:00 | 2009-10-23 23:00:00 |
└──────────────────────┴──────────────────────┘
puedo conseguir fácilmente el período más largo disponible utilizando MIN()
y MAX()
pero ¿cómo hago para seleccionar el máximo de datetimes mínimos y máximos mínimo de datetimes?
Ah, y esta tabla contiene 19 000 000 filas, por lo que los puntos de bonificación para las sugerencias de que correr rápido :)
¿Hay un error en la salida final deseado: 2009-10-23 23:00:00 2008-10-23 23:00:00 en lugar de ? – Patrick
@Patrick, sí, un error tipográfico. –