查找薪水高于 his/her 经理的员工的薪水的查询是什么?
What is the query to find the salary of employees having more salary than his/her manager?
假设下面有一个table
员工 ID
员工姓名
经理ID
员工工资
1
ABC
2
1000
2
防御
3
2000
10
GHI
11
5000
3
JKL
4
1000
现在我们知道 EmpID = 2 应该是输出,因为它的薪水比它的经理高。
但是我们可以编写什么查询来获得此输出?我真的很困惑
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 代表您 table 的数据。
请看一下 table 如何与自身结合(我评论了 WHERE 条件)以显示员工的经理的薪水
假设下面有一个table
员工 ID | 员工姓名 | 经理ID | 员工工资 |
---|---|---|---|
1 | ABC | 2 | 1000 |
2 | 防御 | 3 | 2000 |
10 | GHI | 11 | 5000 |
3 | JKL | 4 | 1000 |
现在我们知道 EmpID = 2 应该是输出,因为它的薪水比它的经理高。
但是我们可以编写什么查询来获得此输出?我真的很困惑
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 代表您 table 的数据。 请看一下 table 如何与自身结合(我评论了 WHERE 条件)以显示员工的经理的薪水