什么是 SQL oracle 查询来找出从雇用日期起的最大经验?
What will be the SQL oracle query for finding out the maximum experience from hire date?
必须找到最有经验的员工。
select empno, ename,
from emp
where max(months_between(SYSDATE,hiredate))
我的软件在 sysdate 上出现错误,所以任何人都可以验证这是否正确。
您可以使用:
select e.*
from emp e
order by hiredate asc
fetch first 1 row only;
如果您想要重复,请添加 with ties
。
以上适用于 Oracle 12C+。在早期版本中,您需要一个子查询:
select e.*
from (select e.*,
row_number() over (order by hiredate) as seqnum
from emp e
) e
where seqnum = 1;
使用NOT EXISTS
:
select e.empno, e.ename
from emp e
where not exists (select 1 from emp where hiredate < e.hiredate)
或:
select empno, ename
from emp
where hiredate = (select min(hiredate) from emp)
或像这样修改查询的 WHERE
子句:
select empno, ename
from emp
where months_between(SYSDATE, hiredate) = (
select max(months_between(SYSDATE, hiredate))
from emp
)
必须找到最有经验的员工。
select empno, ename,
from emp
where max(months_between(SYSDATE,hiredate))
我的软件在 sysdate 上出现错误,所以任何人都可以验证这是否正确。
您可以使用:
select e.*
from emp e
order by hiredate asc
fetch first 1 row only;
如果您想要重复,请添加 with ties
。
以上适用于 Oracle 12C+。在早期版本中,您需要一个子查询:
select e.*
from (select e.*,
row_number() over (order by hiredate) as seqnum
from emp e
) e
where seqnum = 1;
使用NOT EXISTS
:
select e.empno, e.ename
from emp e
where not exists (select 1 from emp where hiredate < e.hiredate)
或:
select empno, ename
from emp
where hiredate = (select min(hiredate) from emp)
或像这样修改查询的 WHERE
子句:
select empno, ename
from emp
where months_between(SYSDATE, hiredate) = (
select max(months_between(SYSDATE, hiredate))
from emp
)