Identifizieren Sie maximale Parallellaufaufgaben

Wie in unten list, betrachten Sie eine Tabelle der Aufgaben mit der time, als sie begannen, die time, wenn sie endete.

Ich muss die optimale Methode / SQL-Abfrage finden, um die Top 5-mal zu finden, wenn die maximale Anzahl von Aufgaben, bei denen das Ausführen mit 1 Sekunde Genauigkeit oder Reichweite sein kann

TaskID | StartDateTime | EndDateTime 1 | 2016-04-23 10:29:48.643 | 2016-04-23 10:29:53.077 2 | 2016-04-23 10:32:58.797 | 2016-04-23 10:33:01.643 3 | 2016-04-23 10:36:09.227 | 2016-04-23 10:36:12.270 4 | 2016-04-23 10:46:58.093 | 2016-04-23 10:47:01.863 5 | 2016-04-23 10:53:08.107 | 2016-04-23 10:53:12.683 

So kann die Ausgabe gleich sein

 DateTime | NoOfTasksRunning 2016-04-23 10:29:48 | 5 2016-04-23 12:29:48 | 4 2016-04-23 10:59:48 | 4 2016-04-23 01:29:48 | 1 

Oder wie

 Duration | NoOfTasksRunning 2016-04-23 10:29:48 to 2016-04-23 10:29:58 | 5 2016-04-23 10:39:48 to 2016-04-23 10:59:00 | 4 2016-04-23 01:29:48 to 2016-04-23 02:29:58 | 1 

Die offensichtlichste Antwort ist es, die größte und kleinste datetime und loop durch jede Sekunde zu finden und zählt, aber das ist nicht der effizienteste path, um es zu bekommen, also bitte nicht enthalten, dass als Ihre Antwort (in der Hoffnung, es ist nicht der einzige path)

Hinweis: Es gibt keine Korrelation in data zwischen verschiedenen Tabellen oben. Sie sind nur ein Beispiel, um eine Vorstellung von der benötigten Ausgabe zu geben oder im Allgemeinen die gewünschte Ausgabe.

Keine SQL-Versionsbeschränkungen, nur dass es MS SQL und keine MySQL- oder Oracle-Abfragen sein muss.

Also, ich habe es getriggers, indem ich alle Start- und Endtermine gefunden habe, gruppiere sie in einer einzigen Spalte, bestelle sie aufsteigend und bleibe nur einmalig.

Dies gab mir eine list der wichtigsten dateszeiten, zwischen denen sich die Anzahl der Arbeitsplätze nicht geändert hätte.

Dann habe ich die list der wichtigsten date time Tabelle verwendet, um Start-und Enddatum der timespanne zu definieren und festgestellt, wie viele Jobs während dieser timespanne ausgeführt wurden. Dies gab mir die Anzahl der Jobs, die zu verschiedenen timespannen laufen ließen.

bestellt es von NoOfJobsRunning in absteigend gab mir die 2. Version der Ausgabe in meiner Frage.