题解 | 更新员工信息表
更新员工信息表
https://www.nowcoder.com/practice/1eb20d4bf7c5443da7b84105372c9070
WITH
NEW_UPDATE AS (
SELECT
EMPLOYEE_ID,
ROW_NUMBER()OVER(PARTITION BY EMPLOYEE_ID ORDER BY UPDATE_DT DESC) rk,
NEW_POSITION,
UPDATE_DT
FROM
EMPLOYEE_UPDATE
)
SELECT
i.EMPLOYEE_ID,
CASE
WHEN i.LAST_UPDATE_DT>=u.UPDATE_DT THEN i.POSITION
ELSE u.NEW_POSITION
END AS POSITION,
CASE
WHEN i.LAST_UPDATE_DT>=u.UPDATE_DT THEN i.LAST_UPDATE_DT
ELSE u.UPDATE_DT
END AS LAST_UPDATE_DT
FROM
EMPLOYEE_INFO i
JOIN
NEW_UPDATE u
ON
i.EMPLOYEE_ID = u.EMPLOYEE_ID
WHERE
rk = 1
ORDER BY
i.EMPLOYEE_ID ASC;
查看9道真题和解析