Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Câu trả lời nhiều lựa chọn Truy vấn T-SQL

Đối với mỗi câu hỏi, liệt kê các câu trả lời mong đợi và câu trả lời đã gửi (bạn cần FULL OUTER JOIN để làm điều này, LEFT tham gia là không đủ) và đếm số lượng trận đấu. Sau đó, so sánh số lượng này với số lượng các câu trả lời mong đợi.

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

Bạn có thể tìm thấy bản trình diễn trực tiếp tại đây



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo máy chủ được liên kết giữa hai vùng chứa Docker chạy SQL Server (Ví dụ T-SQL)

  2. Nhận nhiều giá trị trong con trỏ máy chủ SQL

  3. Làm cách nào để đính kèm cơ sở dữ liệu?

  4. Lọc các bản sao trong một bảng không có khóa chính

  5. SQL Server thêm khóa chính tăng tự động vào bảng hiện có