Bonjour. Voilà j'ai un devoir maison sur une base de données du tour de France, je dois écrire plusieurs requêtes SQL en fonction des questions et je rencontre un problème pour l'une d'entre elle.
Pour commencer, je sais pas si vous en avez besoin mais je vous mets le schéma relationnel de ma bdd en image.
La question qu'on me demande est la suivante:
--Q19) Quel est le classement général des coureurs (nom, code équipe, code pays et temps des coureurs) à l'issue des 13 premières étapes sachant que les bonifications ont été intégrées dans les temps réalisés à chaque étape ?
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT COUREUR.NomCoureur, Coureur.CodeEquipe, Coureur.CodePays, TOTAL FROM (SELECT PARTICIPER.NumCoureur AS NumCou, FORMAT(SUM(PARTICIPER.TempsRéalisé), 'hh:mm:ss') AS TOTAL FROM PARTICIPER WHERE PARTICIPER.NumEtape <= 13 and PARTICIPER.NumCoureur IN (SELECT NumCoureur FROM PARTICIPER WHERE NumEtape =13) GROUP BY NumCoureur), COUREUR WHERE NumCou = Coureur.NumCoureur ORDER BY 4;
Donc je pense que ma requête répond à la question je n'ai pas uniquement mis la condition PARTICIPER.NumEtape <=13 car il y a des coureurs qui n'ont couru que 4 étapes donc forcément ils allaient être dans les premiers. Pour éviter ça j'ai rajouter en condition pour vérifier si les coureurs ont été présent lors de l'étape 13. ( IN traduisant un inter si je me trompe pas en algèbre ensembliste).
Mais lorque je lance cette requete j'ai un problème avec le TempsRéalisé, en effet, si je ne mets pas la fonction FORMAT, la somme des TempsRéalisés est renvoyé en type en float. Mon prof m'a donc conseillé d'utiliser FORMAT sauf que je viens de remarquer que si la somme dépasse 24h ça recommence à 0h00m00s et ignore le 02/01/1900 car je n'ai indiquer que 'hh:mm:ss'. Donc ma question est la suivante comment faire pour afficher une période plus longue que 24h.
Merci d'avance
Partager