在数百名申请人中获取前3名记录

时间:2014-06-15 10:11:16

标签: php mysql sql

我正在开发一个php,mysql的在线测试系统。当学生提交测试时,其标记是根据使用以下查询从数据库匹配的正确答案计算的。

SELECT qa.question_id, qa.test_id, uta.user_answer,uta.user_id,  qa.type,
   qa.answers correct_answer,
 CASE WHEN uta.user_answer = qa.answers THEN 'correct' ELSE 'incorrect' END
 AS count(status)
 FROM questions_answer qa
 LEFT JOIN 
  (
  SELECT user_id, type, test_id, question_id,
  GROUP_CONCAT(answers ORDER BY answers) AS user_answer,
  timestamp from user_test_answers
  WHERE  test_id = '1'    
 GROUP BY user_id, question_id
  ) uta
 ON qa.question_id = uta.question_id
 where qa.test_id=1 GROUP BY uta.user_id

我的问题是: 我想要计算时间和#34;正确"出现在表格中的字段STATUS字段中... 这些没有正确答案作为函数中的参数传递....我不能得到其他学生的结果....所以我想根据在user_id和显示顶部的字段中出现的CORRECT字符串进行比较3个得分手..如何做到这一点"在特定测试中排名前3的得分者" ..

我是MySQL的新手..

1 个答案:

答案 0 :(得分:0)

如果我不得不猜测,以下内容应该会给你你想要的东西。变化:

 CASE WHEN uta.user_answer = qa.answers THEN 'correct' ELSE 'incorrect' END AS count(status)

sum(uta.user_answer = qa.answers) as NumCorrect