Seat
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| id | int |
| student | varchar |
+-------------+---------+
ID는 이 테이블의 기본 키(고유 값) 열입니다.
이 표의 각 행은 학생의 이름과 ID를 나타냅니다.
ID 시퀀스는 항상 1에서 시작하여 계속 증가합니다.
연속되는 두 학생의 좌석 ID를 모두 교체하는 솔루션을 작성합니다. 학생 수가 홀수인 경우 마지막 학생의 ID는 교환되지 않습니다.
아이디를 오름차순으로 정렬한 결과 테이블을 반환합니다.
with tmp_tb as ( select id , student , lag(student, 1) over(order by id) as lag_student -- 한 칸씩 앞으로 땡김 , lead(student, 1) over(order by id) as lead_student -- 한 칸씩 뒤로 땡김 FROM Seat ) select id , case when id%2 = 1 and id = (select max(id) from Seat) then student -- 홀수 중 마지막 ID 사람은 변경X when id%2 = 0 then lag_student -- 짝수 사람은 홀수 사람의 ID 사용 when id%2 = 1 then lead_student -- 홀수 사람은 짝수 사람의 ID 사용 end as student from tmp_tb group by id ;
https://leetcode.com/problems/exchange-seats/description/?envType=study-plan-v2&envId=top-sql-50