Podsumuj zakres nakładających się zakresów datetime w MySQL
Mam tabelę zdarzeń, z których każda ma StartTime i EndTime (jako typ DateTime) w tabeli MySQL.
Próbuję wydrukowaćsuma nakładających się czasów i liczba wydarzeń, które się pokrywały.
Jaki jest najbardziej skuteczny / prosty sposób wykonania tego zapytania w MySQL?
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
Celem tych wyników jest wygenerowanie rachunku za wykorzystane godziny. (jeśli prowadzisz jedno wydarzenie, możesz zapłacić 10 dolarów za godzinę. Ale jeśli dwa wydarzenia są uruchomione, musisz zapłacić tylko 8 dolarów za godzinę, ale tylko przez okres, w którym odbyły się dwa wydarzenia).