Ho una tabella in cui ho datetimes associato ad un ID:Selezionare TimeRange più lunga comune
┌────────────────┬──────────────────────┐
│ 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 |
└────────────────┴──────────────────────┘
Quale sarebbe il modo per selezionare il periodo di tempo più lungo questi due sovrapposti location_id
's quota? In questo caso, l'output desiderato sarebbe:
┌──────────────────────┬──────────────────────┐
│ start | end |
├──────────────────────┼──────────────────────┤
│ 2008-06-01 00:00:00 | 2009-10-23 23:00:00 |
└──────────────────────┴──────────────────────┘
posso facilmente ottenere il più lungo periodo disponibile utilizzando MIN()
e MAX()
ma come potrei fare per la selezione del massimo di datetimes minima e minimo di datetimes massimo?
Oh, e questa tabella contiene 19 000 000 righe, in modo da punti bonus per i suggerimenti che corrono veloci :)
C'è un errore di battitura nel vostro output finale desiderato: 2009-10-23 23:00:00 invece di 2008-10-23 23:00:00 ? – Patrick
@Patrick, sì, un errore di battitura. –