Rumah  >  Soal Jawab  >  teks badan

Soalan SQL, pertanyaan, prosedur atau fungsi

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!

P粉253518620P粉253518620181 hari yang lalu260

membalas semua(1)saya akan balas

  • P粉195200437

    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
    

    Anda hanya perlu mengira bilangan maksimum tugas serentak. Ia cukup untuk menyemak masa mula setiap tugas.

    https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=ee3034a307c32212db365ba06f654f9f

    balas
    0
  • Batalbalas