如何查询员工在特定合同下的重新聘用周期?
查询员工重新聘用周期的SQL语句
假设你的数据表名为project_managers,包含字段:emp_id(员工ID)、contract_id(合同ID)、hire_period(聘用周期)。
实现思路
通过窗口函数ROW_NUMBER()按员工ID和合同ID分组,对聘用周期排序,标记同一员工在同一合同下的聘用次数。筛选出排序值大于1的记录,即为该员工在对应合同下的重新聘用记录,返回对应的聘用周期。
查询语句
SELECT emp_id, contract_id, hire_period AS rehire_period FROM ( SELECT emp_id, contract_id, hire_period, ROW_NUMBER() OVER (PARTITION BY emp_id, contract_id ORDER BY hire_period) AS hire_seq FROM project_managers ) t WHERE hire_seq > 1;
说明
PARTITION BY emp_id, contract_id:按员工和合同分组,确保仅统计同一员工在同一合同下的聘用次数。ORDER BY hire_period:按聘用周期排序,保证第一次聘用标记为hire_seq=1,后续重新聘用的序号依次递增。- 外层查询筛选
hire_seq > 1的记录,即可得到所有重新聘用的周期。针对示例中的员工1,会返回其对应合同下的202209周期。
内容的提问来源于stack exchange,提问作者Ramya B S
相关产品推荐
相关产品推荐

