mysql得到计数和平均值

时间:2012-10-01 10:58:30

标签: mysql

我有一份问卷回复表,其中包含问题ID和用户提交的值。

我想得到答案的数量,以及整个问题ID的平均值,例如对于问题ID 1,选项1的计数为3,选项2的计数为2,但是OVERALL平均值为7(所有选项的总和)除以5(提交的总数)。

我无法看到如何使用我的小组执行此操作,该小组按问题ID和选项编号分组总计。

任何指针都会感激不尽!

示例数据看起来像

questionID  ResponseValue
1           5
1           5
1           6
2           7
2           7
2           7
2           3

我的预期输出是

questionID responseValue countOfResponses questionAverage
1          5             2                5.3333
1          6             1                5.3333
2          3             1                6
2          7             3                6

1 个答案:

答案 0 :(得分:1)

你在寻找像...... 在具有总体总数的每个选项上,我会预先查询每个问题总和(响应的值),然后对问题进行分组,以便对所有条目进行分组...然后再次查询,但是在每个问题上/选项...所以,在这种情况下,你得到的是给定响应所代表的总数的百分比,而不是“平均”......为了确保得到小数精度,我增加了* 1.0000,所以它转到了小数强制结果列而不仅仅是整数。

select
      YT.QuestionID,
      YT.responseValue,
      count(*) as TotalOptResponses,
      TotalByQ.TotalQAverage
   from
      YourTable  YT
         JOIN ( select QuestionID,
                       avg(ResponseValue * 1.0000 ) as TotalQAverage
                   from
                      YourTable
                   group by
                      QuestionID ) TotalByQ
            ON YT.QuestionID = TotalByQ.QuestionID
   group by
      YT.QuestionID,
      YT.ResponseValue