ich einen Tisch, wo ich Datetimes mit einer ID zugeordnet haben:Wählen längste gemeinsame Timerange
┌────────────────┬──────────────────────┐
│ 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 |
└────────────────┴──────────────────────┘
Was wäre der Weg sein, den längsten Zeitraum diese zwei sich überlappende location_id
-Aktie zu wählen? In diesem Fall würde die gewünschte Ausgabe sein:
┌──────────────────────┬──────────────────────┐
│ start | end |
├──────────────────────┼──────────────────────┤
│ 2008-06-01 00:00:00 | 2009-10-23 23:00:00 |
└──────────────────────┴──────────────────────┘
ich verfügbar, um die längste Periode bekommen MIN()
und MAX()
mit leicht kann aber wie würde ich mich über das Maximum Minimum und Datetimes mindestens maximale Auswahl datetimes?
Oh, und diese Tabelle enthält 19 000 000 Zeilen, so Bonuspunkte für Vorschläge, die schnell laufen :)
Gibt es einen Tippfehler in der gewünschten End-Ausgabe: 2009-10-23 23.00.00 statt 2008-10-23 23.00.00 ? – Patrick
@Patrick, yup, ein Tippfehler. –