sql - 查询比他/她的经理工资高的员工的工资是什么?
问题描述
假设有一个下表
EmpID | 企业名称 | 经理ID | EmpSalary |
---|---|---|---|
1 | 美国广播公司 | 2 | 1000 |
2 | 国防军 | 3 | 2000 |
10 | 全球健康指数 | 11 | 5000 |
3 | JKL | 4 | 1000 |
现在我们知道 EmpID = 2 应该是输出,因为它的薪水高于其经理。
但是我们可以写什么查询来得到这个输出呢?我在这里真的很困惑
解决方案
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 条件)以显示员工的经理工资
推荐阅读
- scrapy - 从索引页面有条件地抓取已抓取的项目
- docker - 如何从 docker 中的两个图像导入,其中两个图像共享相同的基础图像
- blazor - Blazor:从页面更新布局的问题
- meteor - Material-ui v5.0.6 和 Meteor 的性能问题
- ubuntu - 'truffle unpack' 从 WSL ubuntu 进入 windows 目录
- python - 如何为 pydantic 类制作文档字符串?
- python - 在 python 和 pandas 中:编辑器在大列表中挣扎,有什么替代方案?
- python-3.x - Elasticsearch 集群给出 READTIMEOUT 错误
- python - 在 macOS 上安装 SciPy 时未找到 BLAS/LAPACK 库
- decimal - vyper 有没有办法计算 e^x ,其中 x 是有符号小数?