题解 | 更新员工信息表

更新员工信息表

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

WITH
T1 AS(
    SELECT
        EMPLOYEE_ID,
        UPDATE_DT,
        NEW_POSITION,
        RANK()OVER(PARTITION BY EMPLOYEE_ID ORDER BY UPDATE_DT DESC) AS DRANK
    FROM
        EMPLOYEE_UPDATE
)
,
T2 AS(
    SELECT
        EMPLOYEE_ID,
        UPDATE_DT,
        NEW_POSITION
    FROM
        T1
    WHERE
        DRANK=1
)
,
T3 AS(
    SELECT
        EMPLOYEE_ID,
        (
            CASE
                WHEN UPDATE_DT>LAST_UPDATE_DT THEN NEW_POSITION
                ELSE POSITION
            END
        ) AS POSITION,
        (
            CASE
                WHEN UPDATE_DT>LAST_UPDATE_DT THEN UPDATE_DT
                ELSE LAST_UPDATE_DT
            END
        ) AS LAST_UPDATE_DT
    FROM
       EMPLOYEE_INFO LEFT JOIN T2 USING(EMPLOYEE_ID) 
)

SELECT * FROM T3

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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