[LeetCode/Sql] Exchange Seats

less than 1 minute read

문제정보

어떻게 풀까?

홀수와 짝수 ID의 순서를 바꿔서 출력한다.

문제를 잘 읽어야 한다. UPDATE 하는 것으로 잘못 이해하고 문제를 풀려고 했다. CASE문을 이용한다. CASE를 이용하면 해당 column만 적용되는 것이 아니라 row에 적용된다. (당연한 말이지만..)

MOD() 대신에 %를 사용하면 MySql에선 실행되지만 Oracle에선 에러가 난다. 둘 다 실행이 가능한 MOD()를 사용하는 것이 나을 듯.

3가지 케이스가 있다. ID가 홀수, 짝수, 그리고 마지막에 혼자 남은 홀수.

문제풀이

SELECT
    CASE
        WHEN MOD(ID, 2) <> 0 AND ID = (SELECT COUNT(1) FROM SEAT) THEN ID
        WHEN MOD(ID, 2) = 0 THEN ID - 1
        ELSE ID + 1
    END AS ID,
    STUDENT
FROM SEAT
ORDER BY ID;

Leave a comment