1

いくつかの質問に対するユーザーの回答を記録するテーブルがあります。

テーブル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
4

3 に答える 3