[SQL] 리트코드 1174. Immediate Food Delivery II

건너별·2025년 3월 18일
0

SQL

목록 보기
15/16

문제 링크

# Write your MySQL query statement below
SELECT round(avg(b.order_type)*100, 2) as immediate_percentage
FROM (SELECT *,
        CASE 
            WHEN order_date = customer_pref_delivery_date THEN 1 
            ELSE 0
        END as order_type
    from Delivery
    WHERE (customer_id, order_date) in (SELECT customer_id,MIN(order_date) from delivery group by   customer_id)
) b

📌핵심 Point

  • WHERE IN 절에서 서브쿼리를 쓸때는, 칼럼들이 align되어야함. in 서브쿼리에서 customer_id와 order_date를 썼으므로, 앞에도 괄호의 형태로 맞춰줌 (customer_id, order_date)
  • 칼럼값별로 이진분류하여 그 비율을 계산할때는, 0과 1로 매핑되게 한 후 평균을 내면 된다. 나는 또다른 서브쿼리로 해결했지만, CASE WHEN 쓰지 않고 다이렉트로 SELECT avg(order_date = customer_pref_delivery_date) 이런식으로 쓰면 더욱 간단히 풀이 가능.
  • CASE WHEN ELSE END 는 SELECT 절의 목적어로 쓰면 됨!!
profile
romantic ai developer

0개의 댓글