我有两个要查询的表,Enrollment 和 Course。在类(class)表中,每门类(class)只有一个条目,但在入学表中,每个注册任何类(class)的学生都有一个条目,因此一门类(class)可能有 30 个条目。我的任务是找到注册人数最多的类(class),并打印出该类(class)的名称以及该类(class)的注册人数。到目前为止,这是我的查询
select c.CourseCode ,(SELECT count( * ) FROM Enrollment WHERE CourseCode = c.CourseCode) as test from Course c ;
这给了我结果:
CS227 - 29
CS228 - 34
CS309 - 31
CS311 - 25 等等,这很好,但是现在,我如何只打印出注册人数最多的类(class)(在本例中为 CS228)。我试过使用 max(),但我什么也做不了。
这是表结构
创建表类(class)( 类(class)代码 char(50), 类(class)名称 char(50), PreReq 字符 (6));
创建表注册( CourseCode char(6) NOT NULL, SectionNo int NOT NULL, StudentID char(9) NOT NULL 引用学生, 等级 char(4) NOT NULL, 主键(CourseCode,StudentID), 外键(CourseCode、SectionNo)引用既定类(class));
最佳答案
按计数排序后取前1名。
即:
Select Top 1 A.CourseCode, Count(*) From Course A inner join Enrollment B on (A.CourseCode=B.CourseCode)
Group By A.CourseCode
Order By Count(*) DESC
此外 - 使用我在此处展示的内部联接而不是子查询。我确实倾向于喜欢 SubQueries,这个可以工作,但它不适合这种查询!
关于mysql - 在 SQL 查询中使用 Count 和 Max,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7458524/