sql >> Databáze >  >> RDS >> Sqlserver

Odpověď s více možnostmi T-SQL dotazu

U každé otázky uveďte očekávané odpovědi a odeslané odpovědi (potřebujete FULL OUTER JOIN Chcete-li to provést, LEFT připojit se nestačí) a spočítat počet zápasů. Poté porovnejte tento počet s počtem očekávaných odpovědí.

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

živou ukázku naleznete zde



  1. SQL – Převod datového typu varchar na datový typ datetime vedl k hodnotě mimo rozsah

  2. Postgres Pomalá skupina podle dotazu s max

  3. Načítání dat z tabulky pomocí PL/SQL

  4. Existuje způsob, jak provést INSERT...ON DUPLICATE KEY UPDATE v Zend Framework 1.5?