比较SQL Server C#Windows应用程序中两个表中的两个类似列
我正在开发一个有多种选择的测验应用程序 我有两张桌子比较SQL Server C#Windows应用程序中两个表中的两个类似列,c#,sql,sql-server,ado.net,C#,Sql,Sql Server,Ado.net,我正在开发一个有多种选择的测验应用程序 我有两张桌子 问题-它有一个名为CorrectAnswer的列 UserQuestions-它有一个名为SelectedAnswer的列 我想检查第一个表中的正确答案是否等于第二个表中的SelectedAnswer,这两个表都有userId和QuestionText列 这是为了计算分数。 我期望的输出是比较后的数字 到目前为止,我尝试实现的解决方案是查询两个表 SELECT UserId, QuestionText, CorrectAnswer FRO
SELECT UserId, QuestionText, CorrectAnswer FROM Questions
将所有值保存在字典数组中,然后尝试比较它们,如果它们相等,则设置计数变量,然后保存分数
我希望有更好的方法。您可以使用连接和条件聚合计算每个用户的分数:
select uq.userid,
avg(case when uq.selectedanswer = q.correctanswer then 1.0 else 0 end) as ratio
from userquestions uq
inner join questions q
on q.questiontext = ua.questiontext
and q.userid = uq.userid
这将为您提供每个用户正确答案的比率,即
0
和1
之间的数字。如果您想要正确答案的计数,那么您只需sum()
。内部联接和计数?请提供示例数据和所需结果。如何处理不回答问题的用户?
select uq.userid,
avg(case when uq.selectedanswer = q.correctanswer then 1.0 else 0 end) as ratio
from userquestions uq
inner join questions q
on q.questiontext = ua.questiontext
and q.userid = uq.userid