我正在尝试从具有以下结构的表中选择每个部门中具有最大注册数的类:
课程:cid,dept,name
注册:cid,sid
这个想法是计算每个班级的所有注册人数,并找出每个部门的最大数量。不幸的是,我在使用最大计数组合时遇到了麻烦。
我的查询看起来像是:
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说语法错了。
答案 0 :(得分:2)
我喜欢这种问题的嵌套查询。首先选择每个类别分组的注册计数。然后找到按部门分组的最大注册计数:
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
答案 1 :(得分:0)
没有E的声明,所以你不能使用E.cid
所以,要么你这样做
SELECT c.name, COUNT(c.*) as count
FROM Courses C
GROUP BY C.dept
或者,
SELECT c.name, MAX(SELECT COUNT(*) FROM Enrollment E WHERE E.cid = C.cid)
FROM Courses C
GROUP BY C.dept
答案 2 :(得分:0)
SELECT MAX(cnt) FROM (
SELECT c.name, COUNT(E.*) AS cnt FROM Enrollment E
INNER JOIN Courses C ON E.cid = C.cid
GROUP BY C.dept
) final