MySQL считает максимальное количество строк - PullRequest
0 голосов
/ 25 марта 2012

Я пытаюсь выбрать классы с максимальной регистрацией в каждом отделении из таблицы со следующей структурой:

Курсы: 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 ]

2 голосов
/ 25 марта 2012

Мне нравятся вложенные запросы для такого рода проблем. Сначала выберите количество зачислений, сгруппированных по классам. Затем найдите максимальное количество зачислений, сгруппированных по отделам:

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
0 голосов
/ 25 марта 2012
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
0 голосов
/ 25 марта 2012

Нет объявления 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...