【发布时间】:2020-10-22 01:57:22
【问题描述】:
我有下表:
+---------------------------------------------------+
| ID EMPNAME DEPARTMENT ROLE SALARY EXTRA |
| 1 brian 10 sales 2000 500 |
| 2 jenny 10 leader 3000 100 |
| 3 sam 20 office 1500 500 |
| 4 cory 20 leader 1200 300 |
| 5 tifa 30 custservice4000 1000 |
| 6 sammy 30 leader 3000 200 |
| 7 anne 30 sales 4500 200 |
+---------------------------------------------------+
我的工作是在每个角色中找到比他们的领导(薪水+额外)赚更多的人。然后我将显示那个人的id、empname 和department。我需要一种方法来比较每个部门内角色之间的薪水+额外费用(额外费用是他们每年的奖金)。我已经尝试过类似以下代码的方法,但它不起作用,它没有正确计算最高与领导者的关系。
SELECT a.id, a.empname, a.department
FROM MyTable a
JOIN (SELECT MAX(Salary + extra) As Highest, Dept FROM MyTable GROUP BY Dept) b
ON a.Dept = b.Dept && (a.Salary + a.extra) = b.Highest
如何在标准的前三列中显示他们比特定部门的领导赚得更多?上表应输出以下内容:
+-----------------------+
| ID EMPNAME DEPARTMENT |
| 3 sam 20 |
| 5 tifa 30 |
| 7 anne 30 |
+-----------------------+
这是在 sql developer 中完成的。
编辑:忘记补充EXTRA 的某些值可能是NULL。
【问题讨论】: