SQL/LeetCode
LeetCode / 1174. Immediate Food Delivery II / MySQL(Medium)
박혀노
2023. 11. 29. 17:41
728x90
📚문제
📝풀이
# Write your MySQL query statement below
SELECT ROUND(SUM(CASE
WHEN order_date = customer_pref_delivery_date THEN 1
ELSE 0
END) / COUNT(*) * 100,2) AS immediate_percentage
FROM Delivery
WHERE customer_id, order_date IN (SELECT customer_id, MIN(order_date)
FROM Delivery
GROUP BY customer_id)
WHERE구문 서브쿼리를 활용하여 풀었다
처음에는 order_date만 WHERE구문에서 필터링 해줬는데
Run Code에선 맞았는데 Submit에선 틀렸다고 나왔다
혹시 몰라서 WHERE구문에서
customer_id, order_date 2가지로 필터링 해주니까 정답...
무슨 차이일까 한 번 생각해봤는데
"customer_id & order_date가 동시에 일치하는 결과를 가져와야한다"
예를 들어서 MIN(order_date)인 경우를 필터링해서 모두 가져왔는데
필터링 해준 ID가 아니라 다른 ID와 비교가 되면 답이 같을수가 없다
그러므로 id & order_date의 고유한 조합으로 답을 찾아야 한다
728x90