문제
- LeetCode SQL 문제
626. Exchange Seats / Medium
- 문제 내용 : [링크]
내가 작성한 Query
select a.id ,case when id%2 = 1 then coalesce((select student from seat where id = a.id+1), a.student) when id%2 = 0 then (select student from seat where id = a.id-1) end as student from seat a
id
가 홀수번인 학생과 짝수번인 학생을 swap 해 주는 문제이다.
CASE WHEN THEN
구문과 서브쿼리를 활용하여, id
가 홀수일 때 다음 id
(id+1)의 student
값을 출력한다. 그리고, id
가 짝수일 때 이전 id
(id-1)의 student
값을 출력한다.
만약 총 인원이 홀수 명인 경우, 마지막 사람은 자리를 바꾸지 않으므로 id
가 홀수일 때 다음 id
의 student
값을 출력하면 null
이 나온다. 이를 coalesce
를 통해 다음 id
의 student
값이 null
이면 원래 student
값을 출력하도록 해준다.