SQL - Ne comprend Pas L'Expression Spécifiée comme une Fonction d'Agrégation

Je suis d'essayer d'écrire une requête qui calcule et de la liste de l'étudiant à l'AMP et puis n'affiche que ceux qui sont en dessous de la moyenne moyenne pondérée de tous les élèves. J'ai obtenu avec succès la requête à la sortie d'une table avec la moyenne de chaque étudiant, mais je ne peux pas l'obtenir pour n'afficher que ceux en dessous de la moyenne.

Voici ma requête:

    SELECT SC.StudentID, S.StdLastName, GPA
    FROM (SELECT SC.StudentID, S.StdLastName, ROUND(SUM(C.Credits * GV.GradeValue)/SUM(C.Credits), 2) AS GPA
         FROM ((Student_Classes AS SC INNER JOIN GradeValues AS GV ON SC.Grade = GV.Grade) 
         INNER JOIN Students AS S ON SC.StudentID = S.StudentID)
         INNER JOIN Classes as C ON SC.ClassID = C.ClassID
         GROUP BY SC.StudentID, S.StdLastName)
    GROUP BY SC.StudentID, S.StdLastName, GPA
    HAVING GPA < AVG(GPA)
    ORDER BY GPA;

Quand je fais cela, le message d'erreur qui s'affiche est,

Vous avez essayé d'exécuter une requête qui ne comprennent pas l'expression spécifiée GPA < AVG(GPA) dans le cadre d'une fonction d'agrégation.

J'ai trouvé plusieurs pages sur une erreur similaire sur ce site, mais n'ont toujours pas été en mesure de le faire fonctionner. Toute aide serait grandement appréciée.

  • Pouvez-vous confirmer que la base de données que vous utilisez? Qui n'apparaît pas à la syntaxe de MySQL, principalement en raison de l'absence de dérivés de l'alias de table et les nouvelles parenthèses. Il ressemble à MS Access.
  • Ouais désolé. Mettre mySQL par erreur. C'est dans MS Access.
  • Merci pour la confirmation, je veux être sûr que vous obtenez les bonnes personnes à la recherche à la question. 🙂
  • Vous avez un problème de base avec cette requête: group by GPA entraînera AVG(GPA) toujours être égal à GPA. Je crois que l'erreur est parce que vous essayez d'utiliser une fonction d'agrégation sur une des colonnes de regroupement.
  • Je ne suis pas sûr de comprendre. Si je ne comprend pas l'AMP dans le GROUPE, j'obtiens une erreur, car rien dans SÉLECTIONNEZ ce n'est pas une fonction doit être dans le GROUPE PAR la, non?
  • C'est correct. Vous ne pouvez pas utiliser la moyenne de GPA et la GPA de chaque ligne lorsque vous les obtenir à partir du même jeu de résultats. Je vais essayer d'illustrer le problème dans une réponse un peu plus tard.
  • Hmm. Alright. Je vais continuer à jouer avec elle, mais je me réjouis de votre prendre.

InformationsquelleAutor MitulP91 | 2013-03-04