如何找人并计算他们管理的人数?

时间:2016-06-07 17:36:09

标签: sql oracle-sqldeveloper

select count(m.emp_id), m.EMP_ID
from employee e join employee m
on e.SUPERIOR_EMP_ID = m.EMP_ID
group by m.EMP_ID;

我可以显示m.emp_id,但我需要m.Name。有什么提示吗?

1 个答案:

答案 0 :(得分:1)

要同时查看m.Name,您只需将m.Name添加到SELECTGROUP BY即可。也就是说,我不认为你的逻辑是正确的。您希望COUNT(e.Emp_ID)获得每位经理的员工数量:

SELECT     COUNT(e.Emp_ID), m.Emp_ID, m.Name
FROM       Employee e
INNER JOIN Employee m on e.Superior_Emp_ID = m.Emp_ID
GROUP BY   m.Emp_ID, m.Name

如果您不关心查看经理的员工ID,您可以从您的选择中删除该ID,只需查看名称:

SELECT     COUNT(e.Emp_ID), m.Name
FROM       Employee e
INNER JOIN Employee m on e.Superior_Emp_ID = m.Emp_ID
GROUP BY   m.Name

也许给它一些别名,这样对读者来说更有意义:

SELECT     mng.Name as "Manager", COUNT(emp.Emp_ID) as "Number of Employees"
FROM       Employee emp
INNER JOIN Employee mng on emp.Superior_Emp_ID = mng.Emp_ID
GROUP BY   mng.Name