我有一个分数表,其中包含在网站上回答的所有问题,但它没有回复它的user_id。得分表具有attempt_id字段,该字段是具有user_id的已处理问题表中的外键。所以我想使用attempt_id加入表,并有一个查询,它将选择user_id和他们回答的问题数,并限制前五个用户。如果问题已加载但未回答,则所选答案保持为空,因此对于我正在查找所选答案的查询,该答案也不应为空。
得分表 score_id attempt_id correct_answer selected_answer ...
已处理的问题表 attempt_id user_id question_id
修改(根据以下OP的评论复制:)
我可以使用。
获取特定用户回答的问题数SELECT count(*)
from score a
join ProcessedQuestion b on a.attempt_id = b.attempt_id
where user_id = [userID here]
and a.selected_answer is not null
但我很难为多个用户做这件事
答案 0 :(得分:1)
根据您的评论,它为您提供单个用户的所有内容。
如果要计算所有用户的答案总数,可以执行以下操作:
SELECT user_id, count(1) from score a join ProcessedQuestion b on a.attempt_id = b.attempt_id GROUP BY user_id
只能通过对结果进行排序并添加LIMIT
子句来显示前5名。
SELECT user_id, count(1) as Answers from score a join ProcessedQuestion b on a.attempt_id = b.attempt_id GROUP BY user_id ORDER BY count(1) DESC LIMIT BY 5
请注意,这是伪代码,并未进行实际测试。