如何在学生身上应用答案密钥'回复

时间:2014-04-16 10:22:55

标签: sql

我为英语,数学和科学专业的学生进行了MCQs类型测试 学生们在OMR / OCR可读的表格上解决了他们的考试。 机器以下列方式产生了学生的反应: -

Student ID     Subject   Q1  Q2  Q3  Q4 ......
201            English    3  1   4    1 ......
201            Math       3  2   1    1 ....
201            Science    2  1   2    3 ....
202            English    3  1   4    1 ......
202            Math       3  2   1    1 ....
202            Science    2  1   2    3 ....
-
-
-

我如何在这些数据上应用答案密钥,例如英文我的答案密钥是:

2   2   4   1 .....

请求建议查询这种情况

2 个答案:

答案 0 :(得分:0)

SELECT
StudentId
,CASE WHEN Q2 = ?ANSWER? then 1 ELSE 0 END
,CASE WHEN Q3 = ?ANSWER? then 1 ELSE 0 END
,CASE WHEN Q4 = ?ANSWER? then 1 ELSE 0 END
,CASE WHEN Q5 = ?ANSWER? then 1 ELSE 0 END
FROM
Table
Where subject = 'English'

可能的解决方案之一取代?答案?用你的回答键中的东西

其他方法是生成以下表格:

CREATE TABLE EnglishKey(
QuestionId int,
Answer int)

然后以这种方式插入您的值:

INSERT INTO EnglishKey VALUES (1,3),(2,4),(....)

用问题编号替换1并以正确答案回答。

然后创建一个SELECT应该很容易

答案 1 :(得分:0)

SELECT 
    a.StudentID
    CASE WHEN a.Q1 <> a.A1 THEN 0 ELSE 1 end AS Result1,
    CASE WHEN a.Q2 <> a.A2 THEN 0 ELSE 1 end AS Result2,
    CASE WHEN a.Q3 <> a.A3 THEN 0 ELSE 1 end AS Result3,
    CASE WHEN a.Q4 <> a.A4 THEN 0 ELSE 1 end AS Result4,
    CASE WHEN a.Q5 <> a.A5 THEN 0 ELSE 1 end AS Result5,
    CASE WHEN a.Q6 <> a.A6 THEN 0 ELSE 1 end AS Result6,
    CASE WHEN a.Q7 <> a.A7 THEN 0 ELSE 1 end AS Result7,
    CASE WHEN a.Q8 <> a.A8 THEN 0 ELSE 1 end AS Result8
FROM 
    StudentTable a
    INNER JOIN AnswerTable b ON a.[SUBJECT] = b.[SUBJECT]

这个答案假设您在单独的表格中有答案,可以加入主题。

如果您发现写出所有案例陈述(可能有100个问题)很痛苦,您可以通过在多个列中分解语句在Microsoft Excel或开放式办公室快速构建这些查询,让它填写1 ,2,3,4s等然后复制粘贴一次快乐。