首页 > 解决方案 > Oracle SQL - 子查询以获取超过其 Job_Id 的 Max_Salary 的员工

问题描述

在 HR Schema 中,我们有一个表 jobs,每个 job id 都有最低和最高薪水。我必须使用子查询找到其 Job_Id 获得超过 Max_Salary 的员工。

我试图制作这个子查询,但我得到“没有找到数据”。

SELECT FIRST_NAME,SALARY, JOB_ID FROM HR.EMPLOYEES E WHERE SALARY >(SELECT MAX_SALARY  FROM HR.JOBS J WHERE E.JOB_ID = J.JOB_ID );

提前致谢。

标签: oraclesubquery

解决方案


WITH SALARY_DETAIL AS (SELECT JOB_ID, MAX(MAX_SALARY) AS MAX_SALARY  FROM JOBS J GROUP BY J.JOB_ID)
 
SELECT E.FIRST_NAME, E.SALARY, E.JOB_ID FROM HR.EMPLOYEES E , SALARY_DETAIL S 
  WHERE S.JOB_ID = E.JOB_ID 
        AND E.SALARY > S.MAX_SALAR

推荐阅读