2012-03-24 3 views
0

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

курсы: УУР DEPT, имя

подачи заявок: ИДС, 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

Где находится ваш стол «Курсы»? – Lion

+0

Извините, я написал запрос с головы. Исправлена. –

ответ

2

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

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

Спасибо, что случилось с запросом, который я написал? Разве это просто разница между SQL и MySQL? –

+0

Я думаю, что в запросе есть несколько вещей. Для одного: для агрегированных операторов каждый выбранный столбец должен быть либо агрегатной функцией, либо предложением group by. Так что «select name, max (something) group by dept» не работает. – McGarnagle

0

Там нет объявления Е, так что вы не можете использовать 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 
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 
Смежные вопросы