SQL计数和Group by-Do计数和Group一起使用,允许这样做吗?

SQL计数和Group by-Do计数和Group一起使用,允许这样做吗?,sql,count,group-by,Sql,Count,Group By,我正在使用标准SQL进行一个练习查询。 在本例中,我需要的是获得每个注册任何课程超过2次的学生的姓名和ID。在本例中,表包含以下信息(我将仅列出与本练习相关的列): 学生有学生的ID和姓名。 课程具有课程ID。 类具有组ID和课程ID。 注册有注册号。ID、学生ID、班级ID和获得的成绩 因此,所有这些总结都是为了找出哪些学生在注册中有两个以上的条目与同一课程相匹配,通过课堂。到目前为止,我已经了解到: SELECT Student.id, Student.name FROM

我正在使用标准SQL进行一个练习查询。 在本例中,我需要的是获得每个注册任何课程超过2次的学生的姓名和ID。在本例中,表包含以下信息(我将仅列出与本练习相关的列):

学生有学生的ID和姓名。 课程具有课程ID。 类具有组ID和课程ID。 注册有注册号。ID、学生ID、班级ID和获得的成绩

因此,所有这些总结都是为了找出哪些学生在注册中有两个以上的条目与同一课程相匹配,通过课堂。到目前为止,我已经了解到:

   SELECT Student.id, Student.name FROM 
     Student S JOIN Registration R on S.id = R.studentID
        WHERE (SELECT COUNT(*) FROM 
            Course C JOIN Class L on L.courseId = C.id
                JOIN Registration R on R.classId = L.id
                    group by C.id ) > 2
问题是,这样计算和分组工作吗??他们是允许我得到每组的比赛数量,还是像我担心的那样,他们只是给我现场的结果

如果是的话,我可以如何处理这个问题??
谢谢你的帮助

开始阅读HAVING子句。此外,还将Student别名为S,因此需要在SELECT子句中使用前缀“S”,而不是“Student”


所有4个表都被合并以生成一个结果集,该结果集表示注册参加某一课程任何课程的所有学生。然后,我们通过学生课程组合进行分组,并使用HAVING子句找出注册人数超过2人的学生。当然,如果您的意思是“2或更多”而不是“多于2”,那么您可以使用
>1
=2
而不是
>2

谢谢您的帮助和关于Having子句的建议。我看不出这个查询与我需要的东西有什么关系,但我会尽量自己做一个。谢谢很好,现在我明白你的意思了。谢谢现在很清楚了!
SELECT S.id StudentID, S.name, C.id CourseID
FROM Student S
JOIN Registration R on S.id = R.studentID
JOIN Class L on R.ClassId = L.id
JOIN Course C on L.courseId = C.id 
GROUP BY S.id, S.name, C.id
HAVING COUNT(R.studentID) > 2;