Angenommen, es gibt Datensätze wie folgt:
Employee_id, work_start_date, work_end_date
1, 01-jan-2014, 07-jan-2014
1, 03-jan-2014, 12-jan-2014
1, 23-jan-2014, 25-jan-2014
2, 15-jan-2014, 25-jan-2014
2, 07-jan-2014, 15-jan-2014
2, 09-jan-2014, 12-jan-2014
Die Anforderung besteht darin, eine SQL-SELECT-Anweisung zu schreiben, die die Arbeitstage nach employee_id gruppiert zusammenfasst, aber die überlappenden Zeiträume ausschließt (das bedeutet - sie nur einmal in die Berechnung einbezieht).
Die gewünschte Ausgabe wäre:
Employee_id, worked_days
1, 13
2, 18
Die Berechnungen für Arbeitstage im Datumsumfang erfolgen wie folgt: Wenn work_start_date = 5 und work_end_date = 9 ist, dann worked_days = 4 (9 - 5).
Ich könnte eine PL/SQL-Funktion schreiben, die dies löst (manuelles Durchlaufen der Datensätze und Durchführen der Berechnung), aber ich bin sicher, dass es mit SQL für bessere Leistung erledigt werden kann.
Kann mir jemand bitte in die richtige Richtung weisen?
Danke!