1

表を参照してください: http://dl.dropbox.com/u/10356431/Shared/screen.png

特定の test_id のオンライン テストで、正しく答えられた質問を見つけるための SQL の作成を手伝ってください。

私は1つを構築しました。

SELECT COUNT(UNIQUE d.question_id) AS CORRECT
FROM test_response d,
     question_response r
WHERE d.response_id   = r.question_resp_id
AND r.correct_response_flag != 'N'
AND d.test_id = '10113'

しかし、問題は、単一選択の質問を正確に見つけることができる一方で、4 つの回答のうち 2 つが正しいと仮定した場合、複数選択の場合はそうではなく、1 つを選択すると不正確な正しく回答された質問としてカウントされます。

ロジック: 質問セットが生成され、ユーザーに表示されます。各テストには、特定の問題セットを使用した独自の ID があります。ユーザーが選択した応答は、test_responseテーブルに格納されます。

4

1 に答える 1

0

更新:これは、4つの回答の質問に対して2つの行が作成されるOPのテーブルデザインでは機能しません

最初に各質問にすべての答えが正しいかどうかを確認してから、間違った答えがない質問を数える必要があると思います。

select
  count(*) - count(incorrect_answers_per_question) correct
from (
  select
    d.test_id,
    d.question_id,
    sum(case when r.correct_response_flag = 'N' then 1 end) incorrect_answers_per_question
  from test_response d
  join question_response r on d.response_id = r.question_resp_id
  where d.test_id = '10113'
  group by d.test_id, d.question_id
)
于 2012-04-23T07:25:59.280 に答える