Algorithm/leetCode

[세무민의 코딩일기] LeetCode Trips and Users 문제풀이

세기루민 2022. 1. 17. 23:11
728x90

오늘 포스팅 할 내용은 LeetCode에서 Trips and Users문제를 풀어봤습니다.

 


1. 문제 설명 


2. 문제 예시 


3. 문제 풀이 

이번 문제는 driver_id와 client_id만 잘 구분해주면 된다. 

말 그대로 cancel의 확률을 구하면 되는데 사용자 중 banned가 yes라면 제외한 확률을 구해주면 된다. 

그래서 날짜별로 평균값을 구해주면 되는 문제이다. 

/**
* LeetCode : Trips and Users
* URL :https://leetcode.com/problems/trips-and-users/
*/

/*
* AVG  사용
*/

select trip_totals.day,
,round(avg(trip_totals.status like '%cancel%'), 2) as "Cancellation Rate"
from (
    select trips.request_at as day
    ,trips.status
    from Trips trips, Users clients, Users drivers
    where trips.request_at between '2013-10-01' and '2013-10-03'
    and (clients.users_id = trips.client_id   and clients.banned = 'No')
    and (drivers.users_id = trips.driver_id and drivers.banned = 'No')
) trip_totals
group by day


/*
* join 사용
*/

select trip_totals.day,
round(avg(trip_totals.status like '%cancel%'), 2) as "Cancellation Rate"
from (
    select trips.request_at as day
    ,trips.status
    from Trips trips
    left join Users clients
    on clients.users_id = trips.client_id
    left join Users drivers
    on drivers.users_id = trips.driver_id
    where trips.request_at between '2013-10-01' and '2013-10-03'
    and clients.banned = 'No'
    and drivers.banned = 'No'
) trip_totals
group by day

코드는 위와 같이 풀었다.

join을 이용해도 좋고 테이블을 여러개 합쳐도 무관하다. 

그리고 like를 사용하지 않는 경우라면 trip_totals.status != "completed" 로 조건을 변경해주면 된다. 


4. 결과


5. GitHub Code

 

GitHub - sg-moomin/algorithmStudy_CodingTest

Contribute to sg-moomin/algorithmStudy_CodingTest development by creating an account on GitHub.

github.com


이번 포스팅도 LeetCode에 있는 문제를 풀어봤습니다.

다음에도 유익한 포스팅과 정보로 찾아오겠습니다. 

 

728x90