我如何在SQL查询中执行数学计算百分比差异?

时间:2010-01-21 17:48:44

标签: php sql mysql math

我想进行调查(2个或更多选择),并将结果放在表格中。我只是想知道如何在SQL查询中记录结果。

更重要的是,我应该在查询中进行数学计算,还是只使用PHP来进行数学运算?

实施例

问题表

question_id (int)
question (text)
answer_1 (varchar)
answer_2 (varchar)
answer_3 (varchar)
etc...

答案表

answer_id (int)
question_id (int)
answer (int) The answer they chose. (1, 2, 3, etc.)

我将如何/应该如何计算结果?

编辑:使用MySQL,PHP。答案之间的差异(45%表示等等,50%表示等等,5%表示bloch)。不是作业,Im EE,而不是CS

3 个答案:

答案 0 :(得分:1)

如果事先不知道答案的数量,将问题表分为2 - 一个用于问题(question_id,question_text),一个用于选择(question_id,choice_id,choice_text)会更简单。答案表可以制作成(question_id,answer_id,choice_id)。然后选择它将使用类似下面的内容(QID =您选择的问题的ID):

SELECT choice,
       (COUNT(*) / (SELECT COUNT(*)
                    FROM answers
                    WHERE answers.question_id = QID)) * 100 AS percentage
FROM choices
     INNER JOIN answers
       ON choices.choice_id = answers.choice_id
       AND choices.question_id AND choices.question_id
WHERE choices.question_id = QID
GROUP BY choice_id;

所有这一切都是计算内部查询中的答案总数,然后对于每个选项,将该选项的答案数除以总数。

答案 1 :(得分:0)

这将选择问题中每个答案的受欢迎程度:

SELECT  question,
        COUNT(*) /
        (
        SELECT  COUNT(*)
        FROM    answers ai
        WHERE   ai.question = a.question
        )
FROM    answers a
GROUP BY
        question, answer

如果从未给出答案,则不会选择答案。

答案 2 :(得分:0)

select answer, count(*) from Answers where answer_id = 1 group by answer

select answer_id,answer, count(*) from Answers  group by answer_id, answer

我会给你一个查询来计算每个问题的答案,但遗憾的是你没有办法将答案与问题联系起来。你也不应该在问题表中回答_1,回答_2等。你需要规范化表格。如果您不了解如何操作,则需要在设计数据库之前学习。