24.07.25 01:33 작성
·
48
0
선생님 강의 듣기 전에 나름대로 짱구를 굴려서 풀어 봤는데
기본적으로 case when ~~~ 는 똑같지만
lag, lead 함수를 활용해서 해도 문제 풀 수 있었어서
공부하시는 분들과 같이 공유합니다.
select
id
, case when mod(id, 2) = 1 and id in (select max(id) from seat) then student
when mod(id, 2) = 0 then lag_stu
when mod(id, 2) = 1 then lead_stu
end as student
from (
select
a.id
, a.student
, lag(a.student) over(order by id) as lag_stu
, lead(a.student) over(order by id) as lead_stu
from seat a
where 1=1
) a
where 1=1
order by 1
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
님의 공유해주신 풀이 방식은 lag
와 lead
함수를 사용하여 특정 조건에 맞춰 이전 행 또는 다음 행의 데이터를 활용하는 방식입니다. 이는 SQL에서 데이터의 순서에 따라 값을 비교하거나 교체해야 할 때 유용하게 사용할 수 있는 기법으로, 따라서 데이터 분석 작업에서 자주 사용되는 중요한 스킬 중 하나입니다.
lag
함수는 현재 행에서 지정된 수만큼 이전 행의 데이터를 가져오는 함수이고, lead
함수는 현재 행에서 지정된 수만큼 다음 행의 데이터를 가져오는 함수입니다. 여기서는 자리바꾸기 로직을 구현하기 위해 이러한 창 함수를 효과적으로 사용하셨네요.
이런 방식을 통해 데이터 분석을 위한 SQL 사용 능력을 키우고, 다양한 문제 해결 방식을 배우는 것은 매우 중요합니다. 공유해주셔서 감사합니다. 데이터 분석과 SQL 공부에 매우 도움이 될 것 같아요.