MYSQL计算3个表格的正确答案(用户 - 答案 - 问题)

时间:2015-09-28 08:18:10

标签: mysql count sum

我有3张桌子:

USER:

  • USERID
  • NAME
  • COMPANY
  • AGE

问题:

  • SETID(识别同一集团的所有问题)
  • QUESTIONID
  • 问题(比如"谁是美国总统?")
  • 答案" A"
  • 答案" B"
  • 答案" C"
  • 答案" D"
  • 正确的答案(作为CA)

解答:

  • USERID
  • ANSWERFORQUESTION1(作为AFQ1)
  • ANSWERFORQUESTION2(作为AFQ2)
  • ANSWERFORQUESTION3 ...(将是20个问题)
  • 最后的答案(作为LA)<<<我用这个来知道每个用户的最后答案是什么,并将下一个答案发给他......(IF 21 =" ALL DONE!")

我有两个问题:

1-I需要计算"正确答案的百分比"对于每个答案。

2-I需要计算"正确答案的百分比"对于每个答案 - 对于公司" A",公司" B" ...(将是5家公司)

解决问题1:

select 
    count(DISTINCT ANSWERS.USERID) as TOTAL,

    sum(case when ANSWERS.AFQ1 = QUESTIONS.CA AND ANSWERS.LA = 21 AND QUESTIONS.QUESTIONID = 1 then 1 else 0 end) AT1,
    sum(case when ANSWERS.AFQ2 = QUESTIONS.CA AND ANSWERS.LA = 21 AND QUESTIONS.QUESTIONID = 2 then 1 else 0 end) AT2,

   (....until 20)

from ANSWERS, QUESTIONS
Where ANSWERS.LA = 21

有了这个,我得到了一个带有总答案的表(已完成= 21) - 和AT1,AT2,AT3 ..每个总数"正确答案"对于每个答案。

然后我可以做一个AT1 / TOTAL来获得所有%。

问题1没问题。

但我如何才能对问题2做同样的事情?

TKS!

1 个答案:

答案 0 :(得分:0)

 select 
        COMPANY,count(DISTINCT ANSWERS.USERID) as TOTAL,

        sum(case when ANSWERS.AFQ1 = QUESTIONS.CA AND ANSWERS.LA = 21 AND QUESTIONS.QUESTIONID = 1 then 1 else 0 end) AT1,
        sum(case when ANSWERS.AFQ2 = QUESTIONS.CA AND ANSWERS.LA = 21 AND QUESTIONS.QUESTIONID = 2 then 1 else 0 end) AT2,

       (....until 20)

  from ANSWERS a, QUESTIONS
  join user u on u.userid = a.userid 
  Where ANSWERS.LA = 21
  group by u.COMPANY

提示1: join,其中USER表位于Answer.Userid = User.userid

提示2:使用GROUP BY进行公司

注意:我的语法可能有误。我使用过SQL服务器语法。