리트코드 [Trips and Users]

윤태영·2024년 8월 31일
0

문제

https://leetcode.com/problems/trips-and-users/description/

취소율은 금지되지 않은 사용자가 있는 취소된(클라이언트 또는 드라이버별) 요청 수를 해당일의 금지되지 않은 사용자가 있는 총 요청 수로 나누어 계산됩니다.

매일 "2013-10-01"에서 "2013-10-03" 사이에서 금지되지 않은 사용자가 있는 요청의 취소율을 찾는 쿼리 작성합니다. 취소율은 소수점 둘째자리까지 반올림하고 결과 순서는 임의로 반환

단, 고객과 운전자가 모두 금지 상태여서는 안된다.

Table: Trips

Table: Users

Example1

문제풀이

  1. 원하는 기간의 결과를 구하기 위해 BETWEEN A AND B 사용
  1. banned된 사용자는 집계에서 제외하기 위해 다중행 서브쿼리를 사용
    • users 테이블에서 banned가 Yes인 사용자의 users_id를 구하고, 해당 id가 trips 테이블의 client_id, driver_id에 있으면 제외한다. (NOT IN)

쿼리


SELECT request_at as Day, round(sum(if(status = 'completed', 0, 1))/count(status),2) as 'Cancellation Rate'
FROM Trips
where client_id not in (SELECT users_id FROM Users where banned ='Yes')
      and driver_id not in (SELECT users_id FROM Users where banned ='Yes')
      and request_at between '2013-10-01' and '2013-10-03'
group by Day
profile
ice blue

0개의 댓글