查找具有所选成绩的学生

查找具有所选成绩的学生

我刚刚创建了一个 Access 2010 数据库,用于分析学生的考试成绩。我能够正确获得所有学生的成绩。共有六门科目。我现在要做的是找出谁在六门科目中的五门科目中获得了 A 级。也就是说,谁只差一门科目就错过了满分 A 级。

现在,我以表​​格形式保存了学生的成绩。学生姓名,后面六列是他们所有六门科目的成绩。像这样:

               ENG    LANGUAGE      PHY     CHE     BIO      MATH
ANN            A+      A+           C       A+      A+       A+

JOHN           B+       C           A       A+      B        C+

为了找到所有科目都获得 A+ 的人,我在查询中添加了 A+ 作为条件。但是我们如何找到在任意五门科目中都获得 A+ 的人呢?

我们可以在查询中添加表达式吗,或者我们可以使用 vba 代码吗?你能帮我吗?我就是找不到办法。任何帮助我都会非常感激。

答案1

您的数据库架构设计得很糟糕。使用正确规范化的架构,您只需进行一次简单查询即可获得结果。这实际上可能应该有 4 个单独的表,但让我向您展示如何使用两个表和一个简单的 SQL 查询来实现这一点。

一张表保存分数,一张表保存我们的值。

ScoreValues
-----------
ID | Value
A+ | 4.3
A | 4.0
B | 3.0
C+ | 2.3
C | 2.0
D | 1.0

Scores
------
StudentID | Subject | Score
ANN | ENG | A+
ANN | LANGUAGE | A+
ANN | PHY | C
ANN | CHE | A+
ANN | BIO | A+
ANN | MATH | A+
JOHN | ENG | B+
JOHN | LANGUAGE | C
JOHN | PHY | A
JOHN | CHE | A+
JOHN | BIO | B
JOHN | MATH | C+

select Count(Subject) as AplusGradeCount, Student
from Scores,ScoreValues 
where Scores.Score=ScoreValues.Value and
      ScoreValues.Value > 4.0
Group By Student

QueryResults
------------
AplusGradeCount | Student
5 | ANN
1 | JOHN

无论如何,我强烈建议你花时间了解数据库规范化。适当规范化的数据库将使数据查询变得更加容易。

相关内容