我需要运行一个SQL查询,它将显示在经理之前被雇用的所有员工,并且他们具有他的职能的最低工资。
SELECT ENAME,JOB, SALAR FROM EMP
WHERE JOB = 'SALESMAN'
OR JOB = 'CLERK'
OR JOB = 'ANALYST'
发布于 2020-07-04 18:10:23
使用窗口函数:
select . . .
from (select e.*, m.hiredate as mgr_hiredate,
min(salar) over (partition by job) as min_salar
from emp e left join
emp em
on e.mgr = m.empno
) em
where hiredate < mgr_hiredate and salar = min_salar;
发布于 2020-07-04 18:01:27
您可以将EMP
加入其中,以添加有关每个员工的经理的详细信息(我们对他的HIREDATE
很感兴趣)。稍后在WHERE
部分中,您可以检查经理的HIREDATE
是否晚于相应员工的。
您还可以预先计算每个工作的所有最低工资,然后将此信息连接到每个员工,然后您可以检查员工的工资是否等于最低工资。
SELECT EMPNO, ENAME
FROM EMP e
INNER JOIN EMP m ON e.MGR = m.EMPNO
INNER JOIN (
SELECT JOB, MIN(SALAR) as MINSALAR
FROM EMP
GROUP BY JOB
) s ON s.JOB = e.JOB
WHERE m.HIREDATE > e.HIREDATE AND e.SALAR = s.MINSALAR
https://stackoverflow.com/questions/62732513
复制相似问题