코딩문제풀이/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 |
💻 코드
최종 코드
- 실행 결과
코드 풀이
반응형