MySQL AVG()值不会在每一行重置

时间:2009-04-20 23:52:07

标签: sql mysql

尝试从“响应”字段中获取AVG()字段时,我得到了非常奇怪的结果。

查询:

 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;

我希望结果如下:

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

但似乎保留了每个类别的平均值,然后在有新类别时重置。返回实际数据:

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

任何帮助都会非常感激,我很遗憾。

谢谢!

1 个答案:

答案 0 :(得分:2)

由于GROUP BY子句中有两个字段,因此它为每个不同的GROUP BY对计算AVG。您可能需要另外一个查询(或子查询)来获取您正在寻找的内容。