Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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 GROUP BY with COUNT()分组不正确_Sql - Fatal编程技术网

SQL GROUP BY with COUNT()分组不正确

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

大家好,我正在做一个小的爱好项目,我试图让一个GROUPBY子句正常工作,但它没有对结果进行分组,而是只需要一列

例如:

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语句,而不是表和数据的描述,会更容易提供帮助。这样你可能会得到更多的答案。