Heim > Fragen und Antworten > Hauptteil
Das ist die Beschreibung.
Es gibt eine Tabelle, die die Zeitintervalle auflistet, die zum Ausführen einer bestimmten Aufgabe erforderlich sind:
id | Starten | Abgeschlossen |
---|---|---|
1 | 07:00:00 | 11:00:00 |
2 | 12:30:00 | 17:00:00 |
3 | 11:30:00 | 14:00:00 |
4 | 09:30:00 | 11:30:00 |
5 | 10:00:00 | 15:00:00 |
6 | 09:00:00 | 13:30:00 |
7 | 07:00:00 | 11:30:00 |
Diese Aufgaben können nicht gleichzeitig erledigt werden. Ich muss herausfinden, wie viele Tage mindestens erforderlich sind, um alle Aufgaben zu erledigen.
In dieser Tabelle kann ich mindestens 5 Tage damit verbringen, die Aufgabe zu erledigen.
day 1 => task 1 and task 2 day 2 => task 4 and task 3 day 3 => task 5 day 4 => task 6 day 5 => task 7
Das Ergebnis sollte also 5 sein. Ich hoffe es ist klar, vielen Dank im Voraus!
P粉1952004372024-04-04 09:43:56
SELECT COUNT(*) FROM test t1 JOIN test t2 ON -- these 2 conditions checks for overlapping t1.start < t2.finish AND t2.start < t1.finish -- this condition simply decreases the amount of combined rows -- to be examined, it does not effect the output AND t1.id <= t2.id GROUP BY t1.id -- retrieve only maximal value ORDER BY 1 DESC LIMIT 1
您必须简单地计算同时任务的最大数量。检查每个任务的开始时间就足够了。
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=ee3034a307c32212db365ba06f654f9f 一个>