查询通过和未通过的学生

Query for students passed and not passed

如何查询一个学生是否通过,每个学生有十个科目,每个科目的及格分数是(>49)
要通过的学生,he/she 必须通过所有科目。 有什么帮助吗?

使用 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 查询设计器的设计视图中开始构建此查询。指定您的 table、select 字段,并在设计视图中设置基本的 GROUP BY 详细信息。然后您可以切换到 SQL 视图以在 Count.

中包含 IIf 表达式

这是 QueryTotalGraedFirstCourse 的示例数据。为了简单起见,我只为每个学生设置了 2 个科目。

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

根据您的描述,"passed" 表示任何科目都没有不及格分数,因此我的示例数据中只有 StudentsID 1 通过。这是我的查询结果,使用数据样本并在 Access 2010 中测试:

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

如果您想查看所有学生,而不仅仅是通过考试的学生,只需删除 HAVING 子句即可。