我被要求创建一个名为 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 |
所有工作人员的名单以及监督他们的人。
答案 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;