Mysql多列总和的平均值

时间:2015-03-07 22:43:10

标签: php mysql

我有一个mysql查询来构建,这给了我一点麻烦。我已经完成了我需要的一系列查询,但我知道必须有更好的方法。

我有一个调查答案表,有5列可以回答5个问题。 问题总是从1(最低)到5(最高)。

我需要找到所有5个答案的平均值,并以100%的百分比显示。

起初,我完成了这个:

Select qone,qtwo,qthree,qfour,qfive FROM survey_answers WHERE survey_id='$survey_id'

然后我循环完成所有答案:

$counter++;
$survey_total = $survey_total+(($qone+$qtwo+$qthree+$qfour+$qfive)/25);

最后,循环浏览所有调查结果后:

$total_average = $survey_total/$counter;

所以这就是我解决我需要做的事情。

任何人都可以帮我改进这个查询,甚至可以改成一个吗?

是否可以执行以下操作:

Select AVG(SUM(qone+qtwo+qthree+qfour+qfive)/25)) FROM survey_answers WHERE survey_id='$survey_id'

以上查询不起作用,我知道sum计算该列名的所有行。 是否有MySQL语法来添加同一条目的多个列? 此外,如果有,我可以将该总和除以我选择的数字,然后在一个查询中平均这些结果??

谢谢。 杰森

1 个答案:

答案 0 :(得分:1)

尝试这样的事情,这应该会给你在%

中寻找的结果
SELECT 
 20 * q1 / devider AS Question1, 
 20 * q2 / devider AS Question2, 
 20 * q3 / devider AS Question3, 
 20 * q4 / devider AS Question4, 
 20 * q5 / devider AS Question5
FROM (
 SELECT (
  SELECT COUNT( survey_id ) 
   FROM (
    SELECT survey_id
    FROM `survey_answers`
    WHERE  `survey_id` ='$survey_id'
    )tt1
   ) AS devider, SUM(`qone') AS q1, SUM(`qtwo`) as q2, SUM(`qthree`) as q3, SUM(`qfour`) as q4, SUM(`qfive`) AS q5
   FROM  `survey_answers` 
   WHERE  `survey_id` ='$survey_id'
   GROUP BY  `survey_id`
  )tt2