OkBublewrap

Swapped Food Delivery 본문

개발/SQL

Swapped Food Delivery

옥뽁뽁 2025. 3. 10. 23:44

Swapped Food Delivery

문제

1. 각 주문의 음식 항목이 서로 바뀌었다.

2. 마지막 주문ID가 홀수이면 그대로 유지해야 한다.



풀이

with temp_01 as (
  select 
    order_id,
    item,
    lead(item) over (order by order_id asc) as lead_item,
    lag(item) over (order by order_id asc) as lag_item
  from orders
)
select 
  order_id as corrected_order_id,
  case when lead_item is null then item
    when mod(order_id, 2) = 1 then lead_item
    when mod(order_id, 2) = 0 then lag_item end as item
from temp_01

1️⃣ CTE: 이전행, 이후행 item 가져오기

2️⃣ case when 1: 이후 행 값이 없으면 item 값 반환 

3️⃣ case when 2: 주문ID가 홀수 이면 이후 item 값 반환

4️⃣ case when 3: 주문ID가 짝수 이면 이전 item값 반환

 

'개발 > SQL' 카테고리의 다른 글

FAANG Stock Min-Max (Part 1)  (0) 2025.03.12
Second Day Confirmation  (0) 2025.03.12
Active User Retention  (0) 2025.03.10
Y-on-Y Growth Rate  (0) 2025.03.10
Postgres 날짜 함수 정리  (0) 2025.03.10