我正在尝试从具有以下结构的表中选择每个部门中注册人数最多的类(class):
类(class):cid、部门、名称
注册:cid、sid
这个想法是计算每个类(class)的所有注册人数,并找到每个部门的最大值。不幸的是,我在最大计数组合方面遇到了麻烦。
我的查询看起来像这样:
SELECT c.name, MAX(COUNT(*) FROM Enrollment E WHERE E.cid = C.cid)
FROM Courses C
GROUP BY C.dept
但我不知道如何让 MAX-COUNT 语法正常工作。我尝试了很多来自 Google 和 StackOverflow 的不同示例,但没有一个对我有用。 MySQL 说语法错误。
最佳答案
我喜欢针对此类问题使用嵌套查询。首先选择每个类(class)分组的注册人数。然后找到按部门分组的最大注册人数:
SELECT MAX(cnt) cnt, dept FROM
(
SELECT COUNT(*) cnt, dept, C.cid
FROM Courses C
INNER JOIN Enrollment E on C.cid = E.cid
GROUP BY cid, dept
) a
GROUP BY dept
关于MySQL统计最大行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9855810/