公司的员工信息是人力资源管理的重要组成部分,请根据提供的员工信息表和最近的员工信息更新表,更新员工的职位信息。 员工信息表 EMPLOYEE_INFO示例如下,其中 EMPLOYEE_ID 是员工编号,POSITION 是员工职位,LAST_UPDATE_DT 是最后一次职位信息更新时间。 员工信息更新表 EMPLOYEE_UPDATE示例如下,其中 EMPLOYEE_ID 是员工编号,UPDATE_DT 是信息更新时间,NEW_POSITION 是员工新职位。 但是现在遇到的问题是,EMPLOYEE_INFO表和EMPLOYEE_UPDATE表的信息不是一一匹配了。 你现在需要结合这2个表,输出一个最新的员工职位信息和更新时间。 遵循以下原则: 对于每个员工,首先在更新表EMPLOYEE_UPDATE中找到每个员工最晚的UPDATE_DT。 1.如果更新表EMPLOYEE_UPDATE中"最晚的UPDATE_DT"晚于EMPLOYEE_INFO表中的”LAST_UPDATE_DT“,则输出的职位信息和更新时间=更新表中的职位和时间。 2.否则的话,则输出的职位信息和更新时间=EMPLOYEE_INFO表中的职位和时间。 最后的输出结果最后结果按照EMPLOYEE_ID升序排序。 示例输出如下: EMPLOYEE_IDPOSITIONLAST_UPDATE_DT EMP001Manager2022-03-15 EMP002Senior Manager2022-03-17 EMP003Manager2023-01-01 EMP001在更新表里的最晚UPDATE_DT为2022-03-15,和EMPLOYEE_INFO里的一样,输出EMPLOYEE_INFO表中的职位和时间 EMP002在更新表里的最晚UPDATE_DT为2022-03-16,晚于EMPLOYEE_INFO里的LAST_UPDATE_DT,输出EMPLOYEE_UPDATE表中的职位和时间 EMP003在更新表里的最晚UPDATE_DT为2022-03-16,早于EMPLOYEE_INFO里的LAST_UPDATE_DT,输出EMPLOYEE_INFO表中的职位和时间
示例1
输入
drop table if exists EMPLOYEE_INFO;
CREATE TABLE EMPLOYEE_INFO (
EMPLOYEE_ID VARCHAR(10) PRIMARY KEY,
POSITION VARCHAR(50),
LAST_UPDATE_DT DATE
);
INSERT INTO EMPLOYEE_INFO (EMPLOYEE_ID, POSITION, LAST_UPDATE_DT)
VALUES
('EMP001', 'Manager', '2022-03-15'),
('EMP002', 'Sales Associate', '2022-03-16'),
('EMP003', 'Manager', '2023-01-01');
drop table if exists EMPLOYEE_UPDATE;
CREATE TABLE EMPLOYEE_UPDATE (
EMPLOYEE_ID VARCHAR(10),
UPDATE_DT DATE,
NEW_POSITION VARCHAR(50)
);
INSERT INTO EMPLOYEE_UPDATE (EMPLOYEE_ID, UPDATE_DT, NEW_POSITION)
VALUES
('EMP001', '2022-03-13', 'Director'),
('EMP002', '2022-03-14', 'Senior Associate'),
('EMP001', '2022-03-15', 'Senior Director'),
('EMP002', '2022-03-16', 'Associate Manager'),
('EMP003', '2022-03-16', 'Associate Manager'),
('EMP002', '2022-03-17', 'Senior Manager');
输出
EMPLOYEE_ID|POSITION|LAST_UPDATE_DT
EMP001|Manager|2022-03-15
EMP002|Senior Manager|2022-03-17
EMP003|Manager|2023-01-01
加载中...