gpt4 book ai didi

mysql - 按受监督员 worker 数分组的 SELECT 查询

转载 作者:行者123 更新时间:2023-11-29 01:36:16 25 4
gpt4 key购买 nike

我正在尝试为以下用户表编写一个 SELECT 查询,该表计算一个用户监督的其他人的数量,然后将他们的姓名与他们监督的人数一起返回为两列,“SupervisorName”和“NoStaff”:

CREATE TABLE User (
userID VARCHAR(10) NOT NULL,
userName VARCHAR(100) NULL,
dateOfJoin DATE NOT NULL,
DepIDREF VARCHAR(10) NOT NULL,
userSupervisor VARCHAR(10) NULL,
PRIMARY KEY (userID),
FOREIGN KEY (DepIDREF)
REFERENCES Department (DepID)
);

INSERT INTO User VALUES
('a10', 'Ava Perrier', '1983-06-17', 'dep10', 'e8'),
('e11', 'Ella Moncada', '1982-02-15', 'dep20', 'k1'),
('e8', 'Emily Afonso', '1985-01-12', 'dep40', 't6'),
('h3', 'Harry Moncada', '1990-03-25', 'dep10', 'null'),
('i9', 'Isla Schmitt', '1984-07-18', 'dep40', 'e8'),
('j2', 'Jack Simpson', '1985-07-30', 'dep10', 'k1'),
('k1','Karim Mualla','1986-10-16','dep10', 'null'),
('n4', 'Noah Domingues', '1989-12-05', 'dep20', 'k1'),
('o7', 'Oscar Cruz', '1986-09-11', 'dep40', 't6'),
('t6','Thomas Carvalho', '1987-04-27', 'dep30', 'w5'),
('w5', 'William Batista', '1988-05-22', 'dep20', 'h3');

我目前写的查询如下:

SELECT userName AS SupervisorName, count(userID) AS NoStaff 
FROM User WHERE userSupervisor IS NOT NULL GROUP BY userSupervisor;

然而,这个查询的结果似乎返回了每个不监督某人的人的名字以及一个我不太明白其计算结果的数字。我尝试了此查询的多种变体,交换 userID 和 userSupervisor 等,但大多数情况下我得到的结果相同。

如有任何帮助,我们将不胜感激(我发现 SQL 非常令人困惑...)。

最佳答案

您需要使用 useriduserSupervisor 字段自行加入 user 表,以获取受监管的用户列表主管,然后你可以通过以下方式进行分组:

select u1.userid, u1.userName as supervisor, count(u2.userid) as no_staff
from user u1
left join user u2 on u1.userid=u2.userSupervisor
group by u1.userid, u1.userName

如果您只想获取那些监督至少 1 个其他用户的用户的列表,请将 left join 更改为 inner join

关于mysql - 按受监督员 worker 数分组的 SELECT 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42788858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com