首页 > 解决方案 > 查询比他/她的经理工资高的员工的工资是什么?

问题描述

假设有一个下表

EmpID 企业名称 经理ID EmpSalary
1 美国广播公司 2 1000
2 国防军 3 2000
10 全球健康指数 11 5000
3 JKL 4 1000

现在我们知道 EmpID = 2 应该是输出,因为它的薪水高于其经理。

但是我们可以写什么查询来得到这个输出呢?我在这里真的很困惑

标签: sqldatabaseplsqlssmsaggregation

解决方案


WITH CTE(EmpID,     EmpName,    ManagerID,  EmpSalary) AS
 (

    SELECT 1,   'ABC' , 2 , 1000 UNION ALL
    SELECT 2 ,  'DEF' , 3 , 2000  UNION ALL
    SELECT 10 , 'GHI'   ,11 ,   5000  UNION ALL
    SELECT 3 ,  'JKL' , 4 , 1000
 )
 SELECT T.EmpID,T.EmpName,T.ManagerID,T.EmpSalary,T2.EmpSalary AS MANAGER_SALARY
 FROM CTE AS T
 JOIN CTE AS T2 ON T.ManagerID=T2.EmpID
 --WHERE T.EmpSalary>T2.EmpSalary

这称为“自联接”。上述代码中的 CTE 代表您的表的数据。请看一下表是如何与自身连接的(我评论了 WHERE 条件)以显示员工的经理工资


推荐阅读