SQL/LeetCode

LeetCode / 1174. Immediate Food Delivery II / MySQL(Medium)

박혀노 2023. 11. 29. 17:41
728x90

📚문제

출처 : LeetCode (https://leetcode.com/problems/immediate-food-delivery-ii/)


📝풀이

# 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