在SQL中显示员工姓名(Boss)和员工(下属)的数量

tec*_*hie 2 sql sql-server join sql-server-2008

我有一个表emp有foll数据:

EmpID    EmpName   MgrID 

100     King        NULL
101     Smith       100
102     Shine       100
103     Racy        102
Run Code Online (Sandbox Code Playgroud)

现在我想显示员工姓名(Boss)和员工(下属)的数量

BOSS       SUBORDINATES
Run Code Online (Sandbox Code Playgroud)
BLAKE                 5

CLARK                 1

FORD                  1

JONES                 2

KING                  3

SCOTT                 1
Run Code Online (Sandbox Code Playgroud)

请指导如何在SQL Server 2008中查询此表.

尝试查询:

select e.first_name as ename,m.first_name as mname from employees e,employees m where e.manager_id=m.employee_id
Run Code Online (Sandbox Code Playgroud)

das*_*ght 5

  • 从自我加入开始 EmpID=MgrID
  • 分组MgrIDEmpName
  • 选择EmpNamecount(*)

将其转换为SQL是机械的:

SELECT b.EmpName, COUNT(*)
FROM Employee e
JOIN Employee b ON b.EmpID=e.MgrID
GROUP BY b.EmpID, b.EmpName
Run Code Online (Sandbox Code Playgroud)

  • @techie按照[link to sqlfiddle](http://sqlfiddle.com/#!3/fef36/4)查看此查询的输出结果.该查询将排除非经理人.如果您想将它们包括在内,请参阅此修改后的查询[此处](http://sqlfiddle.com/#!3/fef36/6). (2认同)