Heim > Datenbank > MySQL-Tutorial > Wie lassen sich überlappende Datumsintervalle effizient zusammenführen?

Wie lassen sich überlappende Datumsintervalle effizient zusammenführen?

DDD
Freigeben: 2024-12-30 06:56:10
Original
1009 Leute haben es durchsucht

How to Efficiently Merge Overlapping Date Intervals?

Überlappende Datumsintervalle zusammenführen (verbesserte Lösung)

Überlappende Datumsintervalle zusammenführen ist eine häufige Aufgabe in der Datenverarbeitung. Obwohl die bereitgestellte Lösung einfach ist, ist sie möglicherweise nicht die effizienteste oder umfassendste. Hier ist eine verbesserte Lösung, die potenzielle Grenzfälle berücksichtigt:

-- Retrieve the overlapping ranges
SELECT 
       s1.StartDate,
       MIN(t1.EndDate) AS EndDate
FROM @T s1 
INNER JOIN @T t1 ON s1.StartDate <= t1.EndDate
  AND NOT EXISTS(SELECT * FROM @T t2 
                 WHERE t1.EndDate >= t2.StartDate AND t1.EndDate < t2.EndDate) 
GROUP BY s1.StartDate 

-- Exclude subintervals
EXCEPT

-- Find overlapping intervals with extended end dates
SELECT 
       s1.StartDate,
       MAX(t1.EndDate) AS EndDate
FROM @T s1 
INNER JOIN @T t1 ON s1.StartDate > t1.StartDate AND s1.StartDate <= t1.EndDate
GROUP BY s1.StartDate
Nach dem Login kopieren

Diese Abfrage berücksichtigt Fälle, in denen die Überlappungen über den ursprünglichen Bereich hinausgehen können. Die EXCEPT-Klausel filtert diese erweiterten Bereiche heraus, was zu einem genaueren und vollständigeren zusammengeführten Intervallsatz führt.

Ausgabe:

StartDate  | EndDate
2010-01-01 | 2010-06-13
2010-06-15 | 2010-08-16
2010-11-01 | 2010-12-31
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie lassen sich überlappende Datumsintervalle effizient zusammenführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage