Salut ,
J'ai les tables suivantes :
Classe ( clasID,libClas,nbre_elv)
Eleve (elvID,nom,prénom,datenais,#classeID,...)
Matière ( matID,libMat,typeMat)
Controle ( contrID,dateContr,TypeContr,#matID )
Note ( contrID,elvID,Note )
Je veux calculer la moyenne de chaque élève dans chaque matière et dans chaque trimestre mais la formule est assez complexe ce qui m'a posé beaucoup de frustrations pour la calculer en SQL , en voici la formule :
MoyMatière = [(CC + Devoir1 + Devoir 2)/3)*2 + Composition] / 5
CC = Contrôle Continu ; Devoir1 , Devoir2 et enfin un examen final qu'on appelle une composition.Tous ces contrôles , l'élève les passe chaque trimestre.
Voilà j'ai trouvé une solution qui consiste à diviser le problème en deux :
- calculer la première partie de la formule à savoir : [(CC + Devoir1 + Devoir2)/3] * 2 en faisant ça :
Remarque sur la dateContr : Cette date me permet de référencer les différents types de contrôles à savoir CC , Devoir1 , Devoir2 et Composition , car le champ "Note" les englobe tous ( CC , Devoir1 , Devoir2 , Composition ).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Select Eleve.elvID , nom , prénom , libMat , AVG(Note) * 2 As Moy1 From Eleve e , Matière m , Controle c , Note n Where e.elvID=n.elvID AND m.matID=c.matID AND c.contrID=n.contrID AND c.dateContr >=#10/10/2011# AND c.dateContr <= #21/12/2011# GROUP BY e.elvID , nom , prénom
C'est pour ça que j'ai mis "dateContr" compris entre deux dates qui correspondent en fait au 1er trimestre ----> qui va du 10/10/2011 au 21/12/2011, mais le problème comment faire référence à la composition dans la requête SQL , en d'autres termes : comment ajouter l'autre partie de la formule dans la requête SQL pour calculer la moyenne par élève et par matière.
Aidez moi s'il vous plait c'est le seul problème qui me reste à résoudre.
Partager