0

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

4

3 回答 3

1

而不是嵌套聚合使用限制来获得最大值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);
于 2014-12-29T19:25:49.870 回答
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);
于 2014-12-29T19:38:30.970 回答
0
  • 使用左连接,以防所有部门都没有由于内部连接而未在此集中处理的员工。
  • 在 d.dept_no 上使用 group by,因为 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;
于 2014-12-29T19:34:47.827 回答