mysql - 是否有一个 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
解决方案
这可能很棘手。但在你的例子中,员工永远不会回到给定的工作。如果是这种情况,您可以使用聚合和窗口函数:
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;
推荐阅读
- javascript - 在数组项中添加空间
- ssl - Anaconda CondaHTTPError/SSLError
- django - 保存后Django表单初始值更改
- shell - shell脚本中带有版本比较的文件名
- struts2 - 从 Struts2 应用程序调用 Struts1 动作
- serial-port - How - Orange pi - Android - USB 串口访问
- kotlin - 对象中类的默认参数行为
- javascript - 如何在 ES6 类中使用匿名函数
- android - 重建应用程序时显示“程序类型已存在:android.arch.core.BuildConfig”错误
- amber-framework - Amber's Auth的任何真实例子?