查询以查找每个经理下的员工数量

时间:2018-04-13 10:46:09

标签: sql self-join

我有一个包含列的Employee表:Id,Name,Manager_Name

我需要列出:每位经理下的员工人数。

如何形成一个简单的SQL查询来实现结果?

注意:可能有两个同名的经理。

表: -     create table employee_test(Id int,Name VARCHAR(100),Manager_Name varchar(100));

输入:

 ID NAME   MANAGER_NAME
 -- ------ ------------
  1 deep   hari
  2 mitra  hari
  3 hari   kishan
  4 kirti  kishan
  5 kishan amit
  6 jumeet hari
  7 fareed deep
  8 stuti  kishore

我的尝试: -

选择m.Name作为ManagerName,count(e.Name)作为employeesCount 来自employee_test e INNER JOIN employee_test m ON e.Manager_Name = m.Name 按m.Name分组

我的输出: -

 MANAGERNAME EMPLOYEESCOUNT
 ----------- --------------
 kishan                   2
 hari                     3
 deep                     1

但它没有照顾其他经理的员工数量?

更新: - 问题对于我来说也不是很清楚,因为面试官确切要求提出问题。

2 个答案:

答案 0 :(得分:0)

我想你想要这个:

select Manager_Name, count(Name)
from Employee
group by Manager_Name

答案 1 :(得分:0)

除了MJH的回复之外,如果可以有两个同名的经理,则需要有一种方法来区分它们。

比如说你有以下(在SQL Server中):

create table Employee (Name VARCHAR(100), Manager_Id INT)
create table Managers (Id INT, Name VARCHAR(100))

SELECT d.Manager_Name, d.employeesCount 
FROM(
    SELECT m.Id, m.Name as Manager_Name, count(e.Name) as employeesCount
    FROM Employee e
    INNER JOIN Managers m ON e.Manager_Id = m.Id
    group by Id, m.Name 
) d
相关问题