https://leetcode.com/problems/exchange-seats/
순서대로 swap( 1,2 -> 2,1)
홀수일 경우) 마지막 수(id)는 그대로
SELECT CASE WHEN MOD(id, 2)= 0 THEN id - 1
WHEN MOD(id, 2)= 1 THEN (CASE WHEN MOD(MAX(id), 2)= 0 THEN id
ELSE id + 1 END)
END AS id
, student
FROM Seat
ORDER BY id
이렇게 하니까 왜 안될까? MOD(MAX(id)
여기서 이상해지는 것 같은데 왜인지 모르겠다. 이렇게 할 경우 행 1개만 출력됨.
저기가 이상하다고 생각한 이유는
SELECT CASE WHEN MOD(id, 2)= 0 THEN id - 1
ELSE id + 1
END AS id
, student
FROM Seat
ORDER BY id
홀수 행 고려안하고 했을 때 마지막 가장 큰 id만 틀리고 다른 건 맞음..
SELECT CASE WHEN id = (SELECT COUNT(*) FROM Seat) AND MOD(id, 2)= 1 THEN id
WHEN MOD(id, 2)= 1 THEN id + 1
ELSE id - 1
END AS id
, student
FROM Seat
ORDER BY id
그래서 그냥 max 대신 COUNT와 같은 id는 id 값 그대로 출력하게 했더니 된다.