SQL查询:员工数据库

SQL查询:员工数据库,sql,Sql,我有这样的SQL数据库,其中有分配给他们的员工和主管。对于没有男性员工为其工作的主管,我需要找到SSN和为其工作的员工总数 以下是数据库中我的表的外观: 下面是我的解决方案代码: SELECT supervisors.ssn, COUNT(e.ssn) FROM employee AS supervisors, employee AS e WHERE e.ssn NOT IN (SELECT e.ssn FROM employee e WHERE e.sex = 'M') AND supervi

我有这样的SQL数据库,其中有分配给他们的员工和主管。对于没有男性员工为其工作的主管,我需要找到SSN和为其工作的员工总数

以下是数据库中我的表的外观:

下面是我的解决方案代码:

SELECT supervisors.ssn, COUNT(e.ssn)
FROM employee AS supervisors, employee AS e
WHERE e.ssn NOT IN (SELECT e.ssn FROM employee e WHERE e.sex = 'M') AND supervisors.ssn = e.superssn
GROUP BY supervisors.ssn;
但是上面的代码可以找到至少有一名女性雇员的主管。但是,我需要找到只有女性员工的主管。

类似的情况

SELECT supervisors.ssn
FROM   employee AS supervisors
  inner join employee e on supervisors.ssn = e.supersnn
                       and e.sex = 'F'
group by supervisors.ssn
像这样的

SELECT supervisors.ssn
FROM   employee AS supervisors
  inner join employee e on supervisors.ssn = e.supersnn
                       and e.sex = 'F'
group by supervisors.ssn

您有一个查询,返回至少有一名女性员工的所有主管

如果你改变了思考你想要什么的方式,很容易得到结果


您需要一个查询,该查询将返回不属于至少有一名男性员工的主管集合的所有主管。

您需要一个查询,该查询将返回至少有一名女性员工的所有主管

如果你改变了思考你想要什么的方式,很容易得到结果


您需要一个查询,该查询将返回不属于至少有一名男性员工的主管组成员的所有主管。

如果主管是男性,则许多答案将排除结果

这不会

SELECT employee.lname, count(employee.lname) as NumberOfEmployees 
FROM Employee
INNER JOIN (

SELECT Employee.SuperSSN
FROM Employee
WHERE Employee.SuperSSN NOT IN
(SELECT Employee.SuperSSN FROM Employee e
INNER JOIN Employee
ON e.SSN = Employee.SuperSSN
WHERE Employee.SEX = 'M')
)
AS e
ON Employee.ssn = e.superssn
GROUP BY employee.lname

如果主管是男性,许多答案将排除结果

这不会

SELECT employee.lname, count(employee.lname) as NumberOfEmployees 
FROM Employee
INNER JOIN (

SELECT Employee.SuperSSN
FROM Employee
WHERE Employee.SuperSSN NOT IN
(SELECT Employee.SuperSSN FROM Employee e
INNER JOIN Employee
ON e.SSN = Employee.SuperSSN
WHERE Employee.SEX = 'M')
)
AS e
ON Employee.ssn = e.superssn
GROUP BY employee.lname

mysql还是sql server?它们不是一回事。从语法上可以确定这是sql server。您还应该使用显式联接。近30年来,它们一直是标准的一部分。您使用的是哪种数据库管理系统?mysql还是sql server?它们不是一回事。从语法上可以确定这是sql server。您还应该使用显式联接。近30年来,它们一直是标准的一部分。您使用的是哪种数据库管理系统?谢谢!如果您能解释您的答案,那就太好了,请按以下部分:最内层查询:从Employee e中选择Employee.supersn在e.SSN=Employee.supersn中加入Employee ON e.SSN,其中Employee.SEX='M'返回至少有一名男性为其工作的主管。总内部查询从员工中选择Employee.SuperSSN,其中Employee.SuperSSN不在选择Employee.SuperSSN。。。。返回主管没有任何男性员工的员工的SupersN。您必须加入整个查询,以获取主管的姓名及其下属员工的数量。如果主管是男性,则我的回答不排除结果。如果主管手下至少有一名女性员工,但并非所有女性员工,则我的回答将返回一名主管。询问者需要没有男性工作的主管谢谢!如果您能解释您的答案,那就太好了,请按以下部分:最内层查询:从Employee e中选择Employee.supersn在e.SSN=Employee.supersn中加入Employee ON e.SSN,其中Employee.SEX='M'返回至少有一名男性为其工作的主管。总内部查询从员工中选择Employee.SuperSSN,其中Employee.SuperSSN不在选择Employee.SuperSSN。。。。返回主管没有任何男性员工的员工的SupersN。您必须加入整个查询,以获取主管的姓名及其下属员工的数量。如果主管是男性,则我的回答不排除结果。如果主管手下至少有一名女性员工,但并非所有女性员工,则我的回答将返回一名主管。询问者需要没有男性为其工作的主管