SELECT moyenne générale
Résolu
victorberson
Messages postés
149
Statut
Membre
-
victorberson Messages postés 149 Statut Membre -
victorberson Messages postés 149 Statut Membre -
Bonjour,
Ce post fait suite a ma précédente question : https://forums.commentcamarche.net/forum/affich-36156511-select-la-plus-petite-moyenne-d-un-table#p36156555
Pour récapituler ma situation :
J'ai une table avec l'id d'un élève, sa note, le nom du module et le coef de la note.
J'ai une seconde table qui fait le lien entre son module, la matière dans laquelle se trouve ce module et le coefficient du module
Ex : la matière Mécanique comporte le module Calcul de Structure coef 2 et Mécanique des solides coef 3. Et le module Calcul de Structure comporte plusieurs notes avec leur coeficient
Je sais calculer la moyenne d'un module :
J'aimerais calculer la moyenne de chaque matière pour un élève donné mais également la moyenne de la classe, la moyenne la plus basse, et la plus grande.
Merci d'avance pour l'aide que vous pourrez m'apporter
Ce post fait suite a ma précédente question : https://forums.commentcamarche.net/forum/affich-36156511-select-la-plus-petite-moyenne-d-un-table#p36156555
Pour récapituler ma situation :
J'ai une table avec l'id d'un élève, sa note, le nom du module et le coef de la note.
J'ai une seconde table qui fait le lien entre son module, la matière dans laquelle se trouve ce module et le coefficient du module
Ex : la matière Mécanique comporte le module Calcul de Structure coef 2 et Mécanique des solides coef 3. Et le module Calcul de Structure comporte plusieurs notes avec leur coeficient
Je sais calculer la moyenne d'un module :
SELECT SUM(note*coef)/ SUM(coef) as moyenne
FROM bulletin
WHERE module = 'Calcul de Structure' AND id_etu = '1234'
J'aimerais calculer la moyenne de chaque matière pour un élève donné mais également la moyenne de la classe, la moyenne la plus basse, et la plus grande.
Merci d'avance pour l'aide que vous pourrez m'apporter
Configuration: Windows / Firefox 68.0
2 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour, peut-être:SELECT module, id_etu, SUM(note*coef)/ SUM(coef) as moyenne FROM bulletin GROUP BY module, id_etu
etSELECT module, SUM(note*coef)/ SUM(coef) as moyenne FROM bulletin GROUP BY module
-
Effectivement, j'avais mal compris certaine choses.
Cependant, je met ci-dessous les requetes finales qui fonctionnent : (si jamais d'autre en on besoin un jour)
Calcul de plus basse moyenne de la classe
SELECT min(moyenne)
FROM (
SELECT m.id_matiere, b.id_etu, SUM(b.note*b.coef * m.coef)/ SUM(b.coef *m.coef) as moyenne
FROM bulletin as b, matiere_module as m
WHERE b.module=m.nom_module AND id_matiere = '3'
GROUP BY m.id_matiere, b.id_etu) as moyennes
Calcul de la moyenne de la classe
SELECT id_matiere, SUM(moyenne * matiere_module.coef)/ SUM(matiere_module.coef) as moyenne
FROM matiere_module,
(
SELECT module, id_etu, SUM(note*coef)/ SUM(coef) as moyenne
FROM bulletin
GROUP BY module, id_etu
) as moyennes
WHERE nom_module = module AND id_matiere = '3'
GROUP BY id_matiere
Calcul de la moyenne d'un élève
SELECT m.id_matiere, b.id_etu, SUM(b.note*b.coef * m.coef)/ SUM(b.coef *m.coef) as moyenne
FROM bulletin as b, matiere_module as m
WHERE b.module=m.nom_module AND id_etu = '1234' AND id_matiere = '3'
GROUP BY m.id_matiere, b.id_etu
Merci encore pour ton aide !