[LeetCode-SQL 50] 1174. Immediate Food Delivery II

코린이·2025년 6월 2일

SQL 문제 풀이 (MySQL)

목록 보기
67/96

❓ 문제

Delivery
+-----------------------------+---------+
| Column Name                 | Type    |
+-----------------------------+---------+
| delivery_id                 | int     |
| customer_id                 | int     |
| order_date                  | date    |
| customer_pref_delivery_date | date    |
+-----------------------------+---------+

delivery_id는 이 테이블의 고유 값 열입니다.
이 테이블에는 특정 날짜에 주문하고 선호하는 배송 날짜(주문 날짜 또는 그 이후)를 지정한 고객에 대한 음식 배달 정보가 저장됩니다.

고객이 선호하는 배송 날짜가 주문 날짜와 같으면 즉시 주문이라고 하고, 그렇지 않으면 예약된 주문이라고 합니다.

고객의 첫 번째 주문은 고객이 주문한 주문 중 주문 날짜가 가장 빠른 주문입니다. 고객에게 정확히 하나의 첫 주문이 있다는 것은 보장됩니다.

모든 고객의 첫 주문에서 즉시 주문의 비율을 소수점 둘째 자리에서 반올림하여 구하는 솔루션을 작성하세요.

자세한 문제 내용은 사이트 참고...


❗️ 문제 풀이

WITH TMP_TB AS (
    SELECT customer_id, MIN(order_date) AS min_order_date
    FROM Delivery
    GROUP BY customer_id
)
SELECT
    ROUND(SUM(CASE WHEN A.order_date = A.customer_pref_delivery_date THEN 1 ELSE 0 END) / COUNT(A.customer_id) * 100, 2) AS immediate_percentage
FROM Delivery A JOIN TMP_TB B
    ON A.order_date = B.min_order_date
    AND A.customer_id = B.customer_id
ORDER BY A.customer_id
;

🔗 Reference

https://leetcode.com/problems/immediate-food-delivery-ii/description/?envType=study-plan-v2&envId=top-sql-50

0개의 댓글