我有一个包含列的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
但它没有照顾其他经理的员工数量?
更新: - 问题对于我来说也不是很清楚,因为面试官确切要求提出问题。
答案 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