2014-12-29 4 views
0

Мне нужно отобразить название отдела и количество сотрудников отдела с большим количеством сотрудников. Однако я получаю следующую ошибку (# 1111 - Недопустимое использование групповой функции). Вот запрос:Ошибка MySQL: # 1111 - Недопустимое использование групповой функции

select e.dept_no, dnombre, count(*) from emple e, depart d 
where e.dept_no=d.dept_no 
group by e.dept_no, dnombre 
having count(*)=(select max(count(*)) from emple group by dept_no); 

Мне нужна помощь по этому вопросу в MySQL.

ответ

1

Вместо гнездовых агрегатов используйте Limit для получения максимального значения count. Попробуйте это ..

select e.dept_no, dnombre, count(*) from emple e, depart d 
where e.dept_no=d.dept_no 
group by e.dept_no, dnombre 
having count(*)=(select count(*) from emple group by dept_no order by count(*) Desc limit 1); 
0
  • использовал левое соединение в случае, если все отделы не было сотрудников, не обрабатываемые в этом наборе из-за внутреннего соединения.
  • использовали группу по d.dept_no, так как номер e.dept может быть пустым.
  • заказывается по счету d.depts dec
  • используется лимит-оператором только для возврата максимальной записи «ONE». Обратите внимание, что этот подход не будет показывать связи ..

.

SELECT count(d.dept), d.dnombre, d.dept_no 
FROM Emple e 
LEFT JOIN depart d 
on E.dept_no=d.dept_no 
GROUP BY d.dept_no, d.dnombre 
ORDER BY count(d.dept) desc 
LIMIT 1; 
0

, если вы хотите использовать функцию MAX вы также можете сделать это следующим образом:

SELECT e.dept_no, dnombre, COUNT(*) 
FROM emple e, depart d 
WHERE e.dept_no=d.dept_no 
GROUP BY e.dept_no, dnombre 
HAVING COUNT(*) = (SELECT MAX(cnt) FROM (SELECT COUNT(*) AS cnt FROM emple GROUP BY dept_no) T); 
Смежные вопросы