检查一名工作人员监督多少人

时间:2021-04-07 12:10:48

标签: sql

我被要求创建一个名为 SupervisorStaff 的新表,其中显示一列员工 ID 和另一列显示该员工当前监管的员工数量。我已经有一个名为“staff”的表,其中包含“staffID”和“SupervisorID”等列,因此我计划使用存储在其中的信息来制作我的新表。 SupervisorID 是监督他们的员工的 ID。例如,id 为 - 3 的员工可能有一个 SupervisorID - 5,这意味着员工 5 是监督他们的人。我试图做的是计算每个员工 ID 的主管 ID,以显示每个员工 ID 监督的员工总数。我这样做了:

CREATE VIEW SupervisorStaff AS
    SELECT Staff.StaffID, COUNT(Staff.SupervisorID) AS "No. of staff supervised"
    FROM Staff
    GROUP BY (Staff.SupervisorID)
    ORDER BY (Staff.StaffID)

然而,这行不通。我对数据库还很陌生,所以我真的不知道我哪里出错了,也不知道该从哪里开始。

我希望最终结果如下所示:

<头>
员工编号 监督员工人数
1 4
2 1

所有员工的列表(如他们的 ID 所示)以及他们监管的人数(如其右侧的数字所示)。

我目前正在使用的表格如下所示:

<头>
员工姓名 员工编号 SupervisorID
约翰·史密斯 1 5
瑞秋林 2 5
理查德方式 3 1

所有工作人员的名单以及监督他们的人。

2 个答案:

答案 0 :(得分:0)

所以你想看看每个人监督多少人。

您在 group by 的正确轨道上,但您的选择值应包含:

  • 您的组中使用的值
  • 像计数一样聚合

像这样:

select
supervisorid as 'Supervisor', count(staffid) as 'Nr of people supervised'
from staff
group by supervisorid
order by supervisorid

答案 1 :(得分:0)

如果这是您的 STAFF 表:

CREATE TABLE STAFF(NAME varchar(20), ID int, SUPERVISOR_ID int);
INSERT INTO STAFF VALUES('Jon',1,5);
INSERT INTO STAFF VALUES('Rachel',2,5);
INSERT INTO STAFF VALUES('Richard',3,1);

然后这是获取您要查找的结果的查询:

SELECT SUPERVISOR_ID, COUNT(*) AS NO_STAFF_SUPERVISED 
FROM STAFF 
GROUP BY SUPERVISOR_ID;