Sql 从单独的表分组
我需要统计每年第一学期成绩达到80%或以上的学生人数。我有两个表格,一个是学生详细信息,称为TBL学生,另一个是他们的成绩,称为TBL学生科目分数。现在,在tblStudents中的a列下有每个学生的年数,第一学期分数存储在tblStudentSubjectMarks中的E1列中。我写这篇文章是为了显示所有获得80%或更高成绩的学生,不管他们的年级如何,结果如下:Sql 从单独的表分组,sql,count,group-by,Sql,Count,Group By,我需要统计每年第一学期成绩达到80%或以上的学生人数。我有两个表格,一个是学生详细信息,称为TBL学生,另一个是他们的成绩,称为TBL学生科目分数。现在,在tblStudents中的a列下有每个学生的年数,第一学期分数存储在tblStudentSubjectMarks中的E1列中。我写这篇文章是为了显示所有获得80%或更高成绩的学生,不管他们的年级如何,结果如下: SELECT COUNT(*) AS [80%] FROM tblStudentSubjectMarks WHERE E1 >
SELECT COUNT(*) AS [80%]
FROM tblStudentSubjectMarks
WHERE E1 >= 80;
输出为:1553
现在,我想根据AcYear(学生的当前年份)对数据进行分组,以便显示第一年有多少人得了A,第二年有多少人得了A,依此类推。问题是,当我尝试这个时
SELECT COUNT(*) AS [80%]
FROM tblStudentSubjectMarks, tblStudents
WHERE E1 >= 80
GROUP BY AcYear;
输出是三行值,如442605。显然,这个输出是不正确的。
我做错了什么?您在隐式地进行交叉连接,这意味着所有学生的所有分数都与每个学生相关联。您需要通过指定一个表中的记录与另一个表中的记录的关联方式来限制结果。例如,如果StudentID是唯一标识学生的列,则可以将WHERE条件和'ed添加到现有条件中,以便WHERE子句类似于:
WHERE E1 >= 80 AND tblStudentSubjectMarks.StudentID = tblStudents.StudentID