我有3张桌子:

用户:


用户身份
名称
公司
年龄


问题:


SETID(标识同一组中的所有问题)
QUESTIONID
问题(例如“谁是美国总统?”)
回答“ A”
答案“ B”
回答“ C”
回答“ D”
正确答案(作为CA)


答案:


用户身份
答案1(作为AFQ1)
ANSWERFORQUESTION2(作为AFQ2)
回答3 ...(将是20个问题)
最后答案(如洛杉矶)<<

我有2个问题:

1-我需要计算每个答案的“正确答案”的百分比。

2-我需要计算每个答案的“正确答案”的百分比-对于公司“ 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可以。

但是我如何对第二期做同样的事情?

最佳答案

 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,在Answer.Userid = User.userid上有USER表

提示2:将GROUP BY用于COMPANY

注意:我的语法可能是错误的。我已经使用了SQL Server语法。

关于mysql - 带有3个表的MYSQL计数正确答案(用户-答案-问题),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32818488/

10-13 09:51