MySQL错误:#1111 - 无效使用组功能

时间:2014-12-29 19:23:34

标签: mysql sql mysql-error-1111

我需要显示更多员工的部门名称和部门员工人数。 但是我收到以下错误(#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中需要这个查询的帮助。

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

  • 使用左连接,以防所有部门都没有由于内部联接而未在此集合中处理的员工。
  • 在d.dept_no上使用了一个组,因为e.dept编号可能为null。
  • 按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;

答案 2 :(得分: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);