【问题标题】:Using SQL, find manager who's salary is double or higher than employee使用 SQL 查找工资比员工高一倍或更高的经理
【发布时间】:2019-05-14 17:02:39
【问题描述】:

我有一个包含四列的员工表。 Employee_id、姓名、薪水、Boss_id (1 彼得 500 2) (2 杰瑞 900 3) (3 迈克 2000 不适用) 我的问题是,我怎样才能找到薪水是他/她员工两倍以上的经理? 例如,如果我的工资是 1000,而我老板的工资是 3000。我希望结果为“我,我的老板”。如果 Peter 的工资是 500,而他的老板 Jerry 的工资是 900。这还不够,所以找到 Jerry 的老板是 Mike。迈克的工资是2000,翻了一番还多。结果应该是“彼得,迈克” 不只是为一个人,我需要为每个员工找到这样的关系。 我需要的结果应该如下所示: (彼得迈克) (杰里迈克) (迈克不适用)

【问题讨论】:

  • 为什么第二个结果是“Peter,Mike”而不是“Jerry,Mike”?
  • 到目前为止,您为实现这一目标做了哪些尝试?
  • 和上面的 cmets 一样,这是一个非常简单的查询,带有自连接和一些简单的数学运算。你能告诉我们你做了什么,因为我们可能会遗漏一些东西。

标签: sql-server stored-procedures


【解决方案1】:

将表加入自身:

SELECT emp.Name, boss.Name
FROM Employees emp
INNER JOIN Employees boss ON boss.Employee_id = emp.Boss_Id AND boss.Salary >= emp.Salary * 2

【讨论】:

  • 这行不通。这只能给出一个级别。如果老板的工资不够高,就需要找老板的上司。我需要一个查询来递归地做这样的事情。
  • 那么你必须使用CTE(公用表表达式)。我已经完成了,但如果没有更多的示例数据进行测试,还不足以写到这里。
  • 我知道如何写 CTE 但不知道如何适应条件。
猜你喜欢
  • 1970-01-01
  • 2019-11-02
  • 1970-01-01
  • 2012-07-31
  • 2013-05-23
  • 2021-09-25
  • 1970-01-01
  • 2019-01-25
相关资源
最近更新 更多