每位员工几岁

时间:2019-04-10 16:27:37

标签: oracle plsql

-Emperental al pleple que ha ocupado un puesto en la empresa durante mas tiempo,真正的包容一切。

工作经历,工作时间,工作时间,工资,薪金

从市长咨询临时市长铁姆波·奎哈·佩尔曼尼基多·恩佩拉多·恩佩特 Pero me falta mostar a que numero de empleado(empno)pertenece ese dato,porque solodeberíade mostrarme el empno 22 que es quien duro mas tiempo desarrolando cierto trabajo

estoy trabajando zh db.grussell.org

select max(round((enddate-startdate)/365.25)) experiencia
from jobhistory
where enddate is not null;

1 个答案:

答案 0 :(得分:0)

在Google翻译的帮助下,我想这可能就是您要寻找的东西:

SQL> with test (empno, startdate, enddate) as
  2    (select 1, date '2018-01-01', date '2018-03-01' from dual union all
  3     select 2, date '2018-01-01', date '2018-05-24' from dual union all
  4     select 3, date '2018-01-01', date '2018-04-13' from dual union all
  5     select 4, date '2018-01-01', null              from dual
  6    )
  7  select empno,
  8         number_of_days
  9  from (select empno,
 10               enddate - startdate number_of_days,
 11               row_number() over (order by enddate - startdate desc) rn
 12        From test
 13        where enddate is not null
 14       )
 15  where rn = 1;

     EMPNO NUMBER_OF_DAYS
---------- --------------
         2            143

SQL>

它是做什么的?

  • TEST CTE代表您的表(我删除了不相关的列)
  • 在线视图使用ROW_NUMBER分析函数,该函数按降序排列工作天数,这意味着RN = 1是服务时间最长的员工
  • 其余的很容易;选择与该员工相关的数据

我建议您仅运行内联视图(包含SELECT的内联视图(ROW_NUMBER)来查看发生的情况。