코딩문제풀이/SQL

[LeetCode] Trips and Users (SQL)

오늘밤공부 2023. 5. 26. 11:00
반응형

🗓️ 문제 설명

  • Trips 테이블의 id, client_id, driver_id, city_id, status, request_at은 각각 ID, 클라이언트 ID, 운전자 ID, 도시 ID, 상태, 요청 날짜를 나타냅니다.
  • id는 기본키이며, client_id와 driver_id는 Users 테이블의 외래키입니다.
  • Status 컬럼에는 'completed', 'cancelled_by_driver', 'cancelled_by_client'가 있습니다.
Column name Type
id int
client_id int
driver_id int
city_id int
status enum
request_at date
  • Users 테이블의 users_id, banned, role은 각각 id, 취소여부, 역할을 나타냅니다.
  • users_id는 기본키입니다.
  • role은 'client', 'driver', 'partner'가 있으며, banned는 'Yes', 'No'가 있습니다.
Column name Type
user_id int
banned enum
role enum

 

문제

  • 취소 비율은 해당 날짜에 차단되지 않은 사용자가 있는 취소된(클라이언트 또는 드라이버에 의한) 요청 수를 금지되지 않은 사용자가 있는 총 요청 수로 나누어 계산합니다.
  • '2013-10-01'과 '2013-10-03' 사이에 금지되지 않은 사용자(클라이언트와 드라이버 모두 금지되지 않아야 함)가 있는 요청의 취소 비율을 찾기 위한 SQL문을 작성해주세요.
  • 취소 비율은 소수점 둘째 자리까지만 나타내주세요.
  • 문제 예시

Trips

id client_id driver_id city_id status request_at
1 1 10 1 completed 2013-10-01
2 2 11 1 cancelled_by_driver 2013-10-01
3 3 12 6 completed 2013-10-01
4 4 13 6 cancelled_by_client 2013-10-01
5 1 10 1 completed 2013-10-02
6 2 11 6 completed 2013-10-02
7 3 12 6 completed 2013-10-02
8 2 12 12 completed 2013-10-03
9 3 10 12 completed 2013-10-03
10 4 13 12 cancelled_by_driver 2013-10-03

Users

user_id banned role
1 No client
2 Yes client
3 No client
4 No client
10 No driver
11 No driver
12 No driver
13  No driver
  • 출력 예시
Day Cancellation Rate
2013-10-01 0.33
2013-10-02 0.00
2013-10-03 0.50

 

💻 코드

최종 코드

  • 실행 결과

 

코드 풀이

 

반응형