当前位置: 首页 > 知识库问答 >
问题:

选择员工最多的经理姓名

范鸿畅
2023-03-14

我们有一个emp表,其中包含empno、ename、job、mgr、hiredate、sal、comm、deptno列

我试过了

SELECT m.ename, COUNT(e.empno) FROM emp e
INNER JOIN emp m ON e.empno = m.empno
GROUP BY m.ename HAVING COUNT(e.empno) = GREATEST(COUNT(e.empno));

我的输出是每个值为1的经理的姓名我们如何输出员工最多的经理的姓名?

共有2个答案

尉迟安民
2023-03-14

首先,修复ON子句。其次,如果需要一行,请使用ORDER BYLIMIT

SELECT m.ename, COUNT(e.empno)
FROM emp e INNER JOIN
     emp m
     ON m.empno = e.mgr
GROUP BY m.ename
ORDER BY COUNT(e.empno) DESC
LIMIT 1;

您的HAVING子句不会过滤任何内容,因为任何(非NULL)值都等于自身。

朱修德
2023-03-14

以下作品:

SELECT COUNT(e.empno), m.ename FROM emp e
INNER JOIN emp m ON e.mgr = m.empno
GROUP BY m.ename HAVING GREATEST(COUNT(e.ename)) = COUNT(e.ename)
LIMIT 1;
 类似资料:
  • 我试图用SQL编写一个查询,从同一个“employee”表中返回员工的姓和经理的姓。每个员工都有一个employeeid和一个“reportsto”列,其中包含其经理的employeeid。 这是我目前为止返回第一部分的内容(员工的姓和报告对象的id) 这个返回 我不知道如何将“reports”取下来,抓取它对应的employeeid,然后添加经理员工的姓,并将其添加到同一个记录中。 所以表应该是

  • 我试图选择一个拥有最年长员工的经理的名字和姓氏,但是我遇到了一些问题,因为每当我运行这个: 因为where子句设置为查找所有员工,所以它返回所有员工,如果我将其更改为manager,则返回所有经理。我理解为什么会这样,但我真的不知道如何解决我的问题。 我希望结果集返回经理的名字和姓氏以及他们最年长的员工的日期。 我觉得这与我的表是如何设置的无关,因为在我的情况下我无法更改它们,更重要的是我如何编写

  • 问题内容: 您好,我有一个员工表,其中包含以下列 我正在尝试创建一个将列出的视图 (通过交叉连接Employee表)。我尝试了外部联接,内部联接等,但无法正确完成。 任何帮助都将受到高度赞赏。 问题答案: 编辑 :如果emp_mgr_id为null,则左联接将起作用。

  • 我已经有了两个查询 选择每个演员n次(n=在电影中出现)。我的查询:选择actor.first_name,actor.last_name FROM actor.INNER连接actor.actor_id=film_actor.actor_id; 结果: 结果:演员1出演了19部电影。 但我要的是:出演电影最多的演员: 任何帮助都是非常感谢的。谢谢你!

  • 我有一个表员工与字段部门,员工和工资。我想要一个查询,以列出部门最高工资和该工资的员工姓名。 我知道这很简单。我在谷歌上搜索,但找到了这样的答案,只列出了部门和工资

  • 我最近开始学习oracle和SQL。在学习过程中,我遇到了几个问题,我的朋友在一次采访中被问到。 此查询生成Employees表中的所有行。至于我所理解的Oracle在列中搜索数据,那么,NULL,这里是作为列名处理的吗?我说Oracle在列中搜索数据是正确的吗?Oracle怎么会给出这个查询中的所有行呢?在WHERE子句中,条件的左手边不一定是列名吗?它不应该抛出一个错误吗? 不给出选定的行。