MySQL计算最大行数

时间:2012-03-24 21:34:13

标签: mysql sql database

我正在尝试从具有以下结构的表中选择每个部门中具有最大注册数的类:

课程: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说语法错了。

3 个答案:

答案 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