select Fname,Lname,salary,ssn
from Employee
where joptype='nurse' AND salary <= ALL (select salary
from Employee E,Nurses N
where E.Ssn=N.Ssn AND E.joptype='nurse' AND N.shift='morning')
我想返回一个护士名单谁在早上工作,他们的工资比所有的护士少,或相反。我已经尝试了早上和晚上,我也尝试了比所有的护士。我认为问题是在第二个地方,似乎他忽略了轮班条件。
3条答案
按热度按时间dxxyhpgq1#
您可以使用
EXISTS
查找早班,在Oracle 12中,您可以使用ORDER BY salary ASC FETCH FIRST ROW WITH TIES
查找工资最低的匹配员工:或者,如果要检查所有护士并查找最低工资,然后按早班筛选:
如果要使用
JOIN
而不是EXISTS
,则可以用途:(但是,如果
Employee
在Nurses
中有多个条目,则使用JOIN
将获得重复条目,而使用EXISTS
则不会获得重复条目)或者对于您的代码,您似乎在错误的位置设置了移位过滤器:
fiddle
6fe3ivhb2#
我是这样理解的你说的话
她们的工资比所有护士都低
可能意味着 * 他们的平均工资 *,所以我在子查询中使用了它。
(Just a备注:真的是jop类型吗?不是joB吗?)
2w2cym1i3#
也许你可以试试这样:
...这将为您提供工资低于或等于早班护士最低工资的护士列表。