⭐题解 | 更新员工信息表

更新员工信息表

https://www.nowcoder.com/practice/1eb20d4bf7c5443da7b84105372c9070

-- 先找出最新的更新日期
WITH latest_date AS (
    SELECT employee_id, MAX(update_dt) AS max_date
    FROM EMPLOYEE_UPDATE
    GROUP BY employee_id
),
-- 第二个CTE查询最新的岗位
latest_position AS (
    SELECT e.employee_id, e.new_position, d.max_date
    FROM latest_date d
    LEFT JOIN EMPLOYEE_UPDATE e
        ON d.employee_id = e.employee_id
        AND d.max_date = e.update_dt
)

SELECT
    i.employee_id AS EMPLOYEE_ID,
    CASE WHEN lp.max_date > i.last_update_dt THEN lp.new_position ELSE i.position END AS POSITION,
    CASE WHEN lp.max_date > i.last_update_dt THEN lp.max_date ELSE i.last_update_dt END AS LAST_UPDATE_DT
FROM EMPLOYEE_INFO i
LEFT JOIN latest_position lp 
    ON i.employee_id = lp.employee_id
ORDER BY i.employee_id;

这个题这么复杂给我放到中等题里啊.................

首先判断的时候记得用case...when即可。

全部评论

相关推荐

LuminousZJ:不行,最后还是要看学信网的,这点不能伪装,也骗不过人家,得不偿失
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务