sql >> Database >  >> RDS >> Sqlserver

Meerkeuze-antwoord T-SQL-query

Voor elke vragenlijst de verwachte antwoorden en de ingediende antwoorden (je hebt een FULL OUTER JOIN nodig om dit te doen, een LEFT join is niet genoeg) en tel het aantal matches. Vergelijk dit aantal vervolgens met het aantal verwachte antwoorden.

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

Je kunt hier een live demo vinden



  1. SQL:Like vs Bevat - Verschillende resultaten

  2. Oracle naar Excel - PL/SQL-exportprocedure

  3. Som tot drempelwaarde bereikt en reset vervolgens de teller

  4. Een geserialiseerde tekenreeks toevoegen die al in de database bestaat