mysql - Mysql一表内多重比较
问题描述
Mysql知识远非完美。我不能把它全部搞清楚,所以我想我可以在这里尝试一下以理解逻辑。
我有两张桌子
表:办公室
ID(整数(pk)) | 名称(varchar) |
---|
和
表:员工
ID(整数(pk)) | office_id(int 不为空) | Chief_id (int) | 名称(varchar) | 工资(浮动) |
---|
我想要 :
a) 选择所有薪酬高于直接主管的人
b) 选择所有办公室的列表以及每个办公室中工资最高的人。如果不止一个人的工资最高,则全部显示。即使没有人,也应该选择办公室。
c) 选择只有一名直接下属的所有首领。
d) 选择按其中人员总工资降序排列的所有办公室。
知道我应该从哪里开始吗?提前致谢!
解决方案
从 a) 开始
SELECT s.*, chief.wage AS chief_wage
FROM staff s, staff chief
WHERE s.chief_id = chief.id
AND s.wage > chief.wage
这里我们使用 self join 将主管的数据添加到所有员工中。然后只是比较工资。
推荐阅读
- javascript - 使用 Javascript 制作的脚本元素何时实际加载?
- sql - 选择累积(?)计数,其中计数取决于 postgresql 中的两个日期列
- dc.js - 获得复杂减少的前 n 个
- firebase - 如何将生产数据从 Cloud Firestore 导入本地模拟器?
- c++ - 如何使用 C++ 中的子类实例初始化超类数组的元素?
- sql - 将字符串拆分为多行和多列
- reactjs - React hooks:使用 useEffect 替换 componentDidMount 的正确方法
- powershell - 正确格式化 Invoke-RestMethod 结果?
- ruby - Rails API 如何发送带有产品的附加图像作为响应
- javascript - Angular Material MatToolTip 仅在元素被截断时显示