Untuk setiap pertanyaan, daftar jawaban yang diharapkan dan jawaban yang dikirimkan (Anda memerlukan FULL OUTER JOIN
untuk melakukan ini, LEFT
bergabung tidak cukup) dan hitung jumlah kecocokan. Kemudian bandingkan hitungan ini dengan jumlah jawaban yang diharapkan.
select question_id, case when cnt = sum_test then 1 else 0 end as mark
from (
select question_id, count(*) cnt, sum(test) sum_test
from (
select coalesce(q.question_id, s.question_id) as question_id,
correct_option_id,
submitted_option_id,
case when correct_option_id = submitted_option_id then 1 else 0 end as test
from question_answer q full outer join user_exam_answer s
on q.question_id = s.question_id and q.correct_option_id = s.submitted_option_id
) x
group by question_id
) y
Anda dapat menemukan demo langsung di sini