recherche

Maison  >  Questions et réponses  >  le corps du texte

Question, requête, procédure ou fonction SQL

Voici la description.

Il existe un tableau qui répertorie les intervalles de temps nécessaires pour effectuer une tâche spécifique :

id Démarrer Complet
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

Ces tâches ne peuvent pas être accomplies en même temps. J'ai besoin de connaître le nombre minimum de jours requis pour accomplir toutes les tâches.

Dans ce tableau, je peux passer au moins 5 jours pour terminer la tâche.

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

Le résultat devrait donc être 5. J'espère que c'est clair, merci d'avance !

P粉253518620P粉253518620229 Il y a quelques jours328

répondre à tous(1)je répondrai

  • 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
    

    Vous devez simplement calculer le nombre maximum de tâches simultanées. Il suffit de vérifier l'heure de début de chaque tâche.

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

    répondre
    0
  • Annulerrépondre