题解 | 更新员工信息表

更新员工信息表

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

--将两个表上下连接
--日期一样的问题,将两个表新加标记1,2,先以时间排序,再以标记排序
WITH t AS (
    SELECT 
        EMPLOYEE_ID, 
        POSITION, 
        LAST_UPDATE_DT,
        1 AS source  
    FROM EMPLOYEE_INFO
    UNION ALL
    SELECT 
        EMPLOYEE_ID, 
        NEW_POSITION AS POSITION, 
        UPDATE_DT AS LAST_UPDATE_DT,
        2 AS source  
    FROM EMPLOYEE_UPDATE
),
ranked AS (
    SELECT 
        EMPLOYEE_ID,
        POSITION,
        LAST_UPDATE_DT,
        ROW_NUMBER() OVER (
            PARTITION BY EMPLOYEE_ID 
            ORDER BY LAST_UPDATE_DT DESC, source ASC
        ) AS rn
    FROM t
)
SELECT 
    EMPLOYEE_ID, 
    POSITION, 
    LAST_UPDATE_DT
FROM ranked
WHERE rn = 1
ORDER BY EMPLOYEE_ID;

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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