【问题标题】:Compare two similar columns from two tables in SQL Server C# Windows App比较 SQL Server C# Windows 应用程序中两个表中的两个相似列
【发布时间】:2021-03-04 14:57:17
【问题描述】:

我正在开发一个有多种选择的测验应用程序。

我有两张桌子。

  1. 问题 - 它有一个名为 CorrectAnswer 的列

  2. UserQuestions - 它有一个名为 SelectedAnswer 的列

我想检查第一个表中的 CorrectAnswer 是否等于第二个表中的 SelectedAnswer,两个表都有 userId 和 QuestionText 列

这是为了计算分数。 我期望的输出是一个比较后的数字。

到目前为止我尝试实现的解决方案是查询两个表

SELECT UserId, QuestionText, CorrectAnswer FROM Questions
SELECT UserId, QuestionText, SelectedAnswer FROM UserQuestions

将所有值保存在字典数组中,然后尝试比较它们是否相等我设置计数变量然后保存分数。

我希望有更好的方法。

【问题讨论】:

  • 内连接和计数?
  • 请提供样本数据和期望的结果。您如何处理不回答问题的用户?

标签: c# sql sql-server ado.net


【解决方案1】:

您可以使用连接和条件聚合计算每个用户的分数:

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

这为您提供每个用户正确答案的比率,作为01 之间的一个数字。如果您想计算正确答案的数量,则可以改为sum()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多