mysql - 如何在sql中选择比他们各自部门的领导赚更多钱的工人?
问题描述
我有下表:
+---------------------------------------------------+
| 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
。
解决方案
嗯。. . 我在想一个相关的子查询:
select t.*
from mytable t
where (t.salary + t.extra) > (select t2.salary + t2.extra
from mytable t2
where t2.department = t.department and
t2.role = 'leader'
);
推荐阅读
- javascript - 关闭vs代码中的功能时如何关闭蓝线
- reactjs - Can I add variables of unknown name, but known types in type of TypeScript?
- java - 奇怪的随机行为
- php - 如何使用数据库中的月份数添加天间隔?
- javascript - 如何使用@devexpress/dx-react-scheduler-material-ui 切换时间到水平线?
- arraylist - 代号 由于 ArrayList 的并发操作,一次绘制失败
- list - 稍微改变种子时稍微改变随机列表洗牌的输出
- javascript - 自动重新加载页面后在 Safari 中播放音频
- python - Keras 功能 API:我的模型在训练时仅针对一种损失函数而不是 2 个损失函数进行优化
- python - form.get_user() 在 Django 中返回 None