2009-04-20 6 views
0

Ich habe diese sehr seltsame Ergebnisse beim Versuch, das AVG() Feld aus meinem "Antwort" -Feld zu holen.MySQL AVG() Wert nicht auf jeder Zeile zurückgesetzt

Abfrage:

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; 

ich die Ergebnisse so etwas wie erwartet:

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

Aber es scheint, als ob der Durchschnitt der jeden einzelnen Kategorien gehalten wird und dann zurückgesetzt, wenn gibt es eine neue Kategorie. Tatsächliche Daten zurückgegeben:

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

Jede Hilfe würde sehr geschätzt werden, ich bin irgendwie damit verloren.

Danke!

Antwort

2

Da Sie zwei Felder in der GROUP BY-Klausel haben, berechnet AVG für jedes der verschiedenen GROUP BY-Paare. Sie werden wahrscheinlich eine andere Abfrage (oder Unterabfrage) benötigen, um das zu erhalten, wonach Sie suchen.

Verwandte Themen