我还在学习 SQL,找不到合适的方法来查找以下信息:
我创建了一个包含以下列的“员工”表:
“部门”、“年龄”、“工资”、“奖金”;
我正在尝试设计一个查询,该查询将为我提供与另一个部门的年龄相同且奖金高于其薪水的所有员工。
(更准确地说,如果'SALES'部门的某人与'RESEARCH'部门的某人年龄相同并且奖金高于那个研究人员的薪水,那么我想显示他们两个)
这可以在sql中完成吗?
感谢您的时间,
-汤姆
您可以使用exists
. 因为你关心双向的关系,这就像在两个部门中寻找年龄相同但奖金不一样的人一样简单:
select e.*
from employees e
where exists (select 1
from employees e2
where e2.department <> e.department and e2.age = e.age and
e2.bonus <> e.bonus
);
要获得同一行上的对,请使用自联接:
select e1.*, e2.*
from employees e1 join
employees e2
on e1.age = e2.age and e1.department <> e2.department and
e1.bonus > e2.bonus;