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
。有什么提示吗?
答案 0 :(得分:1)
要同时查看m.Name
,您只需将m.Name
添加到SELECT
和GROUP 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