【问题标题】:What is the query to find the salary of employees having more salary than his/her manager? [closed]查询工资比他/她的经理多的员工的工资是什么? [关闭]
【发布时间】:2021-09-25 08:37:09
【问题描述】:

假设有一个下表

EmpID EmpName ManagerID EmpSalary
1 ABC 2 1000
2 DEF 3 2000
10 GHI 11 5000
3 JKL 4 1000

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

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

【问题讨论】:

  • PL/SQL 和 SSMS?奇怪的组合...您实际使用的是哪些 dbms?

标签: sql database plsql ssms aggregation


【解决方案1】:
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 条件)以显示员工的经理工资

【讨论】:

  • idea 本身没问题,但是您的实现将无法正常工作,至少在 Oracle 数据库中不行。我建议你修复它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多