MySQL AVG () значение не сбрасывается в каждой строке - PullRequest
0 голосов
/ 21 апреля 2009

У меня очень странные результаты при попытке извлечь поле AVG () из моего поля "reponse".

Запрос:

 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 Ответ

2 голосов
/ 21 апреля 2009

Поскольку у вас есть два поля в предложении GROUP BY, он вычисляет AVG для каждой из различных пар GROUP BY. Скорее всего, вам понадобится другой запрос (или подзапрос), чтобы получить то, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...