SQL GROUP BY with COUNT()分组不正确
大家好,我正在做一个小的爱好项目,我试图让一个GROUPBY子句正常工作,但它没有对结果进行分组,而是只需要一列 例如:SQL GROUP BY with COUNT()分组不正确,sql,Sql,大家好,我正在做一个小的爱好项目,我试图让一个GROUPBY子句正常工作,但它没有对结果进行分组,而是只需要一列 例如: Table classes ( guID, className ) Table student ( guID, name, classID) Table grades ( s_id, c_id, grade) 例如,返回整个类的某个等级的编号: 学生: "Alex", "class1" "Kevin", "class1" "Lisa", "class2" 等级: "al
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", "course_id", "A"
"kevin_id", "course_id", "A"
"lisa_id", "course_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'
如果我们想包含类名,我们需要添加GROUPBY子句,因为我们想将className字段添加到输出中。不在聚合函数中的任何内容都需要放入GROUPBY子句中
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
是的,但上面说的是整个班级的一个年级数,其中1班总共有2个a。如果你发布DDL和INSERT语句,而不是表和数据的描述,会更容易提供帮助。这样你可能会得到更多的答案。