Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从单独的表分组_Sql_Count_Group By - Fatal编程技术网

Sql 从单独的表分组

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 >

我需要统计每年第一学期成绩达到80%或以上的学生人数。我有两个表格,一个是学生详细信息,称为TBL学生,另一个是他们的成绩,称为TBL学生科目分数。现在,在tblStudents中的a列下有每个学生的年数,第一学期分数存储在tblStudentSubjectMarks中的E1列中。我写这篇文章是为了显示所有获得80%或更高成绩的学生,不管他们的年级如何,结果如下:

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