【滴滴】更新员工最新职位信息
JOIN 连接窗口函数CASE WHENORDER BY用户行为分析面试真题
题目描述
来源:滴滴 SQL 面试真题
员工基础信息表 EMPLOYEE_INFO 记录员工现有职位和最后更新时间,员工信息更新表 EMPLOYEE_UPDATE 记录历史职位更新。请结合两张表输出每个员工最新的职位信息和更新时间。
数据表
EMPLOYEE_INFO
| 字段 | 说明 |
|---|---|
| EMPLOYEE_ID | 员工编号,主键 |
| POSITION | 员工职位 |
| LAST_UPDATE_DT | 最后一次职位信息更新时间 |
EMPLOYEE_UPDATE
| 字段 | 说明 |
|---|---|
| EMPLOYEE_ID | 员工编号 |
| UPDATE_DT | 更新时间 |
| NEW_POSITION | 员工新职位 |
处理规则
- 先在
EMPLOYEE_UPDATE中找到每个员工最晚的UPDATE_DT记录。 - 如果该时间严格晚于
EMPLOYEE_INFO.LAST_UPDATE_DT,使用NEW_POSITION和UPDATE_DT覆盖原信息。 - 如果更新时间早于或等于基础信息时间,保留原职位和更新时间。
- 更新时间相同时按
NEW_POSITION升序稳定选择,结果按EMPLOYEE_ID升序排列。
期望输出列
| 列名 | 说明 |
|---|---|
| EMPLOYEE_ID | 员工编号 |
| POSITION | 最新职位 |
| LAST_UPDATE_DT | 最新更新时间 |
数据样例
| EMPLOYEE_IDPKBIGINT | POSITIONVARCHAR(100) | LAST_UPDATE_DTDATETIME |
|---|---|---|
| 1001 | Engineer | 2024-01-10 09:00:00 |
| 1002 | Analyst | 2024-02-01 09:00:00 |
| 1003 | Manager | 2024-03-15 09:00:00 |
| 1004 | Designer | 2024-04-20 09:00:00 |
| 1005 | Developer | 2024-05-01 09:00:00 |
输入数据显示 5 / 5 行
SQL 编辑器正在保存草稿...
Ctrl + Enter 运行
正在加载 SQL 编辑器...
运行你的 SQL 查询后,结果将显示在这里