언어
컬럼마다 따로 놀 수 있다
땅호720
2024. 1. 30. 20:36
# Write your MySQL query statement below
select round(avg(if(order_date=customer_pref_delivery_date,1, 0)) * 100,2) immediate_percentage
from (select customer_id, min(order_date) order_date,
min(customer_pref_delivery_date) customer_pref_delivery_date
from Delivery
group by customer_id) a
처음엔 단순히 제일 빠른 주문과 제일 빨리 도착한 날로 테이블을 준비하고, 거기서 퍼샌티지를 계산해주었다.
그런데 생각해보니 이렇게 풀면? 실제로는 두 날짜가 다른 주문 건이어도 선택될 수 있지 않나? 하는 생각이...
결국 where 절에서 customer_id와 order_date를 묶어서 데이터를 선택하는 조건문으로 방향을 바꿨다
# Write your MySQL query statement below
select round(avg(if(order_date=customer_pref_delivery_date,1, 0)) * 100,2) immediate_percentage
from Delivery
where (customer_id, order_date) in (
select customer_id, min(order_date) as first_order_date
from Delivery
group by customer_id
)