0

这个问题要求我找出这家特定公司的所有经理,他们最近聘用的时间比他们所有下属员工的时间都长。st_name 是人员姓名,st_hiredate 是他们被雇用的时间,st_possition 是他们是否是经理、助理或主管。

当我运行下面的查询时,我正确地得到了进行比较所需的所有元组,但我无法运行它来生成在所有初级员工之后雇用的所有经理的元组。

有没有我可以使用的条件,如果员工姓名的所有实例与其雇用日期在其初级员工之前的所有实例不同,则不要返回他们的姓名?

SELECT a.st_name, a.st_hiredate, b.st_name, b.st_hiredate
FROM (SELECT st_name, st_hiredate, st_position FROM staff WHERE st_position = 'assistant' OR st_position = 'Supervisor') as b JOIN (SELECT st_name, st_hiredate, st_position FROM staff WHERE st_position = 'manager') as a;

员工17人,其中管理人员6人,非管理人员11人。当我运行上述查询时,它会返回 66 个元组,这意味着我正在准确地将每个经理与他们的每个下属进行比较。现在我该怎么说它必须比其他所有下属工作人员都大?

4

1 回答 1

1

试试这种不完全确定语法的查询。明白了。

SELECT * FROM Staff
WHERE st_position='manager'
AND
st_hireDate >(SELECT max(st_hireDate) FROM 
Staff WHERE st_position='Supervisor' OR st_position='assistant' )
于 2013-05-02T15:57:10.857 回答