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 ;