sql >> Databasteknik >  >> RDS >> Sqlserver

Flervalssvar på T-SQL-fråga

För varje frågelista förväntade svaren och de inlämnade svaren (du behöver en FULL OUTER JOIN för att göra detta, en LEFT gå med räcker inte) och räkna antalet matcher. Jämför sedan detta antal med antalet förväntade svar.

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

Du kan hitta en live-demo här



  1. Bästa sättet att lagra ett base64-kodat värde i MySQL DB?

  2. infoga fråga med hjälp av foreach loop som tar emot Uncaught Error:Anrop till en medlemsfunktion execute() på boolean

  3. Sparar textfilens innehåll till DB:Felaktigt strängvärde:'\xEF\xBB\xBF# W...' för kolumnen 'innehåll' på rad 1

  4. MySQL-frågan är smärtsamt långsam på stora data