Summe der überlappenden Zeitbereiche in MySQL

Ich habe eine Ereignistabelle, jede mit einer StartTime und einer EndTime (als Typ DateTime) in einer MySQL-Tabelle.

Ich versuche das auszugebenSumme der Überlappungszeiten und die Anzahl der Ereignisse, die sich überlappten.

Was ist der effizienteste / einfachste Weg, um diese Abfrage in MySQL durchzuführen?

CREATE TABLE IF NOT EXISTS `events` (
  `EventID` int(10) unsigned NOT NULL auto_increment,
  `StartTime` datetime NOT NULL,
  `EndTime` datetime default NULL,
  PRIMARY KEY  (`EventID`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=37 ;


INSERT INTO `events` (`EventID`, `StartTime`, `EndTime`) VALUES
(10001, '2009-02-09 03:00:00', '2009-02-09 10:00:00'),
(10002, '2009-02-09 05:00:00', '2009-02-09 09:00:00'),
(10003, '2009-02-09 07:00:00', '2009-02-09 09:00:00');


# if the query was run using the data above,
# the table below would be the desired output

# Number of Overlapped Events | Total Amount of Time those events overlapped.
1, 03:00:00
2, 02:00:00
3, 02:00:00

Der Zweck dieser Ergebnisse besteht darin, eine Rechnung für die verwendeten Stunden zu erstellen. (Wenn Sie ein Ereignis ausführen, zahlen Sie möglicherweise 10 Dollar pro Stunde. Wenn jedoch zwei Ereignisse ausgeführt werden, müssen Sie nur 8 Dollar pro Stunde zahlen, jedoch nur für den Zeitraum, in dem zwei Ereignisse ausgeführt wurden.)

Antworten auf die Frage(3)

Ihre Antwort auf die Frage