带COUNT的SQL GROUP BY无法正确分组

问题描述

| 嗨,我正在做一个小型的业余项目,我正在尝试让GROUP BY子句正常工作,但是它并没有将结果分组,而是只占用了一列。 例:
Table classes ( guID,className )
Table student ( guID,name,classID)
Table grades  ( s_id,c_id,grade)
例如,返回整个班级某个年级的数字: 学生们:
\"Alex\",\"class1\"
\"Kevin\",\"class1\"
\"Lisa\",\"class2\"
成绩:
\"alex_id\",\"course_id\",\"B\"
\"alex_id\",\"A\"
\"kevin_id\",\"A\"
\"lisa_id\",\"C\"
查询
SELECT classes.className,(SELECT COUNT(*) FROM grades WHERE s_id = student.guID AND   grade = \"A\") as Total_Grades
FROM classes
INNER JOIN student
ON classes.guID = student.classID
WHERE classes.guID = 1
GROUP BY classes.className;
这仅给出结果:
\"class1\",1
应该给的地方:
\"class1\",2
如果有人有空余时间,将不胜感激。     

解决方法

        我将分两步向您展示如何到达那里 假设您只想显示成绩数,下面的查询即可。
SELECT count(*)
FROM grades g
WHERE g.c_ID = 1 and g.grade = \'A\' 
如果要包含className,则需要添加group by子句,因为我们要将className字段添加到输出中。聚合函数中没有的任何内容都需要放入group by子句中。
SELECT c.className,count(*)
FROM grades g
JOIN classes c
  ON g.c_id = c.guID 
WHERE c.guID = 1 and g.grade = \'A\' 
GROUP BY classes.className