首页 > 解决方案 > 是否有一个 sql 查询我想获得具有最早开始日期的最后一个 job_id

问题描述

是否有一个 sql 查询我想获得具有最早开始日期的最后一个 job_id。

我有一张名为雇员的表

employee_id job_id start_date  salary changed_on
123         aaa    2020-08-09  40000. 2020-08-09
123         bbb    2020-08-10  50000. 2020-08-10
123         bbb    2020-08-11  60000. 2020-08-11
456         xxx    2020-08-12  40000  2020-08-12
456         zzz    2020-08-13  50000. 2020-08-13
456         zzz    2020-08-14  60000. 2020-08-14
789         aaa    2020-08-15  70000. 2020-08-15
789         ccc    2020-08-16  80000  2020-08-16

预期成绩

employee_id job_id start_date 
123         bbb    2020-08-10
456         zzz    2020-08-13
789         ccc    2020-08-16

标签: mysqlsql

解决方案


这可能很棘手。但在你的例子中,员工永远不会回到给定的工作。如果是这种情况,您可以使用聚合和窗口函数:

select ej.*
from (select employee_id, job_id, min(start_date) as min_start_date,
             row_number() over (partition by employee_id order by max(start_date) desc) as seqnum
      from t
      group by employee_id, job_id
     ) ej
where seqnum = 1;

推荐阅读