2009-04-20 6 views
0

J'ai des résultats très bizarres lorsque j'essaie d'extraire le champ AVG() de mon champ "reponse".La valeur de MySQL AVG() ne se réinitialise pas sur chaque ligne

Requête:

SELECT AVG(Reponse.note) as noteMoyenne, Categorie.titre, 
     Autorisation.typeEvaluateur, COUNT(DISTINCT Autorisation.id) as nbEvaluateur 
FROM reponses as Reponse, categories as Categorie, questions as Question, 
     autorisations as Autorisation 
WHERE Reponse.question_id = Question.id AND 
     Question.categorie_id = Categorie.id AND 
     Reponse.note != 0 AND 
     Reponse.evaluation_id = $id AND 
     Autorisation.evaluation_id = $id AND 
     Autorisation.complete = 1 
GROUP BY Categorie.titre, Autorisation.typeEvaluateur 
ORDER BY Categorie.id; 

je me attends que les résultats soient quelque chose comme:

noteMoyenne  Cat typeEvaluateur nbEvaluateur 
    4.0225   Cat1 TypeA    3 
    **1.6425  Cat1 TypeB    1 
    3.4123   Cat2  TypeA    5 
    .... 

Mais il semble que la moyenne est maintenue pour les chaque catégories, puis remis à zéro quand il y a une nouvelle Catégorie. Les données réelles retournées:

noteMoyenne Cat  typeEvaluateur nbEvaluateur 
    4.0225  Cat1 TypeA    3 
    **4.0225  Cat1 TypeB    1 
    3.4123  Cat2  TypeA    5 
    .... 

Toute aide serait grandement appréciée, je suis un peu perdu avec cela.

Merci!

Répondre

2

Étant donné que vous avez deux champs dans la clause GROUP BY, il calcule l'AVG pour chacune des différentes paires GROUP BY. Vous aurez probablement besoin d'une autre requête (ou sous-requête) pour obtenir ce que vous cherchez.

Questions connexes