SQL查询以查找响应的问题数来查找最活跃的用户

时间:2016-02-09 11:06:57

标签: mysql sql

我有一个分数表,其中包含在网站上回答的所有问题,但它没有回复它的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

但我很难为多个用户做这件事

1 个答案:

答案 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

请注意,这是伪代码,并未进行实际测试。