Ini penerangannya.
Terdapat jadual yang menyenaraikan selang masa yang diperlukan untuk melaksanakan tugas tertentu:
| id | Mula | Lengkap |
|---|---|---|
| 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 |
Tugas-tugas ini tidak boleh disiapkan pada masa yang sama. Saya perlu mengetahui bilangan hari minimum yang diperlukan untuk menyelesaikan semua tugasan.
Dalam jadual ini, saya boleh menghabiskan sekurang-kurangnya 5 hari untuk menyiapkan tugasan.
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
Jadi hasilnya sepatutnya 5. Saya harap ia jelas, terima kasih terlebih dahulu!
SELECT COUNT(*) FROM test t1 JOIN test t2 ON -- these 2 conditions checks for overlapping t1.startAnda hanya perlu mengira bilangan maksimum tugas serentak. Ia cukup untuk menyemak masa mula setiap tugas.
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=ee3034a307c32212db365ba06f654f9f 一个>