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