Problème de requête de calculs de moyennes - SQL/NoSQL - Programmation
Marsh Posté le 17-05-2010 à 17:04:45
Oui, il faudrait utiliser une sous-requête.
Essayez ceci :
Code :
|
Marsh Posté le 17-05-2010 à 17:09:05
Enregistrer le résultat du SQL sous forme de Requêtes dans Access permet ensuite de les attaquer comme des tables, c'est le seul moyen simple d'utiliser des "sous-requêtes" dans Access.
Marsh Posté le 17-05-2010 à 17:43:38
dans ton SGBD, y'a pas la fonction AVG() pour calculer une moyenne
Marsh Posté le 17-05-2010 à 20:18:36
Merci à vous, ça marche avec la sous requête.
rufo a écrit : dans ton SGBD, y'a pas la fonction AVG() pour calculer une moyenne |
J'ai des coefficients à appliquer aux moyennes
Marsh Posté le 18-05-2010 à 09:48:30
clements42 a écrit : Bonjour, Dans un cadre scolaire, je dois réaliser une appli qui calcule des moyennes de notes de classes.
|
Salut,
Je suis un peu hors sujet, mais il y a un truc important que tu dois savoir : la méthode que tu utilises pour faire tes jointures est dépassée et source d'erreurs potentiellement graves. En effet, les jointures (1) et (2) sont réalisées par WHERE, ce qui peut s'avérer dangereux pour tout un tas de raisons. Cette méthode est dépassée, et sémantiquement incorrecte en plus d'être dangereuse (un WHERE sert à restreindre le jeu d'enregistrements, pas à l'étendre comme le fait la jointure). La meilleure façon de réaliser des jointures consiste à utiliser la syntaxe JOIN (INNER, LEFT ou RIGHT selon le type de jointure souhaité). Cette syntaxe est normalisée, et élimine toute suppression malencontreuse d'un WHERE. Ainsi, ta requête pourrait se réécrire comme ceci :
Code :
|
En plus d'être plus lisible en permettant de bien mettre en évidence la partie jointure de la partie filtre, cette requête est bien plus sécurisée.
Je t'invite à lire tous les risques encourus par les jointures WHERE à partir d'ici : http://forum.hardware.fr/hfr/Progr [...] m#t1945827
Ou encore ici : http://forum.hardware.fr/forum2.ph [...] 0#t1963259
C'était le quart d'heure intégriste
Marsh Posté le 26-05-2010 à 12:24:47
Harkonnen a écrit : |
Intégriste vaut mieux que deux code-moi-ça
Marsh Posté le 17-05-2010 à 16:20:46
Bonjour,
Dans un cadre scolaire, je dois réaliser une appli qui calcule des moyennes de notes de classes.
Je parviens à obtenir toutes les moyennes des élèves d'une classe par matière avec :
qui me renvoie un truc sous la forme :
12.65 | Français
13.70 | Français
6.76 | Français
13.16 | Maths
10.54 | Maths
8.65 | Maths
Chaque ligne correspondant donc à la moyenne d'un élève dans la dite matière.
Maintenant, je souhaite donc obtenir les moyennes minimales par matière (de l'élève le plus mauvais, donc). J'ai essayé en ajoutant un (MIN) devant (SUM(valeur_note * coeff_devoir) / SUM(coeff_devoir)) dans le sélect, malheureusement cela ne fonctionne pas. Access me balance qu'il est impossible d'avoir une fonction d'agrégat dans l'expression MIN((SUM(valeur_note * coeff_devoir) / SUM(coeff_devoir))
Voici mes tables > http://nsa15.casimages.com/img/201 [...] 143029.png
merci à ceux qui m'aideront !
Message édité par clements42 le 17-05-2010 à 16:21:49