0

我有一个带有问题 ID 和用户提交的值的问卷回复表。

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

我看不到如何对我的 group by 执行此操作,该 group by 总共按问题 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
4

1 回答 1

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
于 2012-10-01T11:10:38.293 回答