본문 바로가기

TIL 통합

1/18 TIL

97. 1174. Immediate Food Delivery II

 

LeetCode - The World's Leading Online Programming Learning Platform

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

Table: Delivery

+-----------------------------+---------+
| Column Name                 | Type    |
+-----------------------------+---------+
| delivery_id                 | int     |
| customer_id                 | int     |
| order_date                  | date    |
| customer_pref_delivery_date | date    |
+-----------------------------+---------+
delivery_id is the column of unique values of this table.
The table holds information about food delivery to customers that make orders at some date and specify a preferred delivery date (on the same order date or after it).

 

 

각 customer의 최초 주문 order date와 pref date가 일치하는 지를 묻는 문제 잠깐 곰곰히 생각하다 다음과 같이 일단 작성했다.

select round(if(order_date = customer_pref_delivery_date, 1, 0)/count(*)*100, 2) as immediate_percentage
from delivery
where delivery_id in (select min(delivery_id)
                    from delivery
                    group by customer_id)

이렇게 하니 왜 0이 계속 나오지 싶었는데

if구문에서 출력한 1을 합해주지 않았으니 당연히 뭐가 나올리가..;

select round(sum(if(order_date = customer_pref_delivery_date, 1, 0)/count(*)*100, 2) as immediate_percentage
from delivery
where delivery_id in (select min(delivery_id)
                    from delivery
                    group by customer_id)

그래서 코드를 이렇게 작성해주었더니 요구하는 답 50이 아닌 75가 나왔다.

근데 사실 이렇게 해서 오답이라고 나온 뒤 왜 50이 나오는지 계속 이해가 안 갔는데

 

If the customer's preferred delivery date is the same as the order date, then the order is called immediate; otherwise, it is called scheduled.

The first order of a customer is the order with the earliest order date that the customer made. It is guaranteed that a customer has precisely one first order.

Write a solution to find the percentage of immediate orders in the first orders of all customers, rounded to 2 decimal places.

The result format is in the following example.

 

문제의 설명을 다시 봐보니 order_id의 순번과 earliest order 여부는 상관이 없는 거였음.

애초에 문제를 잘 읽었으면 잘 풀었을 지도...?

일단 킵해놓고 내일 다시 풀기로 했다. 하하

 

문제를 꼼꼼하게 잘 읽자

 

TMI

-프로젝트 발표 준비한다고 삘 받아서 새벽 3시 반 넘어서 잤더니 프로젝트 끝나고서 죽을맛. 그래도 정말 이번에도 성공적이었고, 팀원들간 케미가 너무 좋았다.

내일 회식이 기대된다.

그리고 프로젝트가 끝났으니...피곤해도 밀린 이삿짐 정리를 해야한다...ㅎ

-다면평가를 하면서 느꼈지만, 스파르타 코딩클럽 이름에 걸맞게 빡시게 두달을 구른 결과, 그 전의 나는 상상도 못할 만큼 단기간에 성장한 것 같다. 코딩을 단기간에 그럭저럭 많이 공부했고, 팀플을 주구장창하면서 사람들과 친해졌고, 하루에 14시간 이상씩 앉아 있는 나 자신을 발견하는 되게 신기한 경험을 한달 넘게 하는 중.

내배캠이 이래저래 너무 좋은 경험이 되어가고 있고 이대로 마무리까지 잘 갔으면 좋겠다.

 

 

'TIL 통합' 카테고리의 다른 글

1/23 TIL  (0) 2024.01.23
1/22 TIL 날짜 활용, date_sub, where in 심화  (0) 2024.01.22
B07 팀 KPT  (0) 2024.01.18
1/17 TIL 프로젝트 발표 D-1  (0) 2024.01.17
1/16 프로젝트 ing 윈도우함수 주의  (0) 2024.01.16