查询已通过但未通过的学生

时间:2015-01-31 17:34:59

标签: ms-access ms-access-2010 ms-access-2013

如何查询以了解学生是否通过,每个学生有10个科目,每个科目的及格分数为(>49)
学生要通过,他/她必须通过所有科目。 有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

使用GROUP BY查询来计算每个学生的主题失败次数:

Count(IIf(q.Total > 49, Null, 1))

最终,您只想看到已通过所有科目的学生,这意味着他们的失败次数为零。因此,请在查询的HAVING子句中包含该条件。

SELECT
    q.StudentsID,
    Count(IIf(q.Total > 49, Null, 1)) AS CountOfFailures
FROM QueryTotalGraedFirstCourse AS q
GROUP BY q.StudentsID
HAVING Count(IIf(q.Total > 49, Null, 1)) = 0;

您可以在Access查询设计器的设计视图中开始构建此查询。指定表格,选择字段,然后在“设计视图”中设置基本的GROUP BY详细信息。然后,您可以切换到SQL视图以在IIf中包含Count表达式。

以下是 QueryTotalGraedFirstCourse 的示例数据。为了保持简单,我每个学生只包括2个科目。

StudentsID subject_id Total
---------- ---------- -----
         1          1    90
         1          2    85
         2          1    65
         2          2    30
         3          1    40
         3          2    35

根据您的描述,“通过”表示任何科目都没有失败的分数,因此只有我的样本数据中的 StudentsID 1通过。这是我的查询结果,使用数据样本,并在Access 2010中进行了测试:

StudentsID CountOfFailures
---------- ---------------
         1               0

如果您想要查看所有学生,而不仅仅是那些通过的学生,只需删除HAVING条款。