いくつかの質問に対するユーザーの回答を記録するテーブルがあります。
テーブルA
user_id | question_id | date answered | correct?
-------------------------------------------------
66 345 timestamp 1
34 654 timestamp 0
34 654 timestamp 1
すべてのユーザーによるすべての質問の試行がデータベースに保存されます。
次に、カテゴリのリストと、そのカテゴリに含まれる question_ids も取得します。例えば
テーブルB
category_id | question_id
--------------------------------
1 34
1 44
1 23
2 99
2 44
ユーザーが以前に正解したカテゴリの質問の割合 ( where correct? = 1
) と、カテゴリで回答された最後の 20 の質問の正解率を計算するクエリを作成しようとしています。
これまでのところ、最初の部分はできますが、2番目の部分はできません
SELECT category_id, COUNT(*), COUNT(correct?)
FROM tableA LEFT JOIN tableB USING (question_id)
WHERE user_id = 1
GROUP_BY category_id
これにより、カテゴリ内の質問の合計数と、ユーザーがカテゴリ内で正しく回答した質問の数がわかります。このようなもの
cat_id | total_questions | answered_correctly
-------------------------------------------------
1 455 323
2 334 123
ただし、カテゴリごとに、カテゴリで回答された最新の 20 の質問を見て、正しかった数を取得したいと考えています。だから私はこのようなものが欲しい:
cat_id | total_questions | answered_correctly | questions_correct_in_last_20_answered
-------------------------------------------------------------------------------------
1 455 323 12
2 334 123 8