imhamburger 님의 블로그
Leetcode - Trips and Users 문제풀이 본문
문제
주어진 택시 요청(trip) 데이터에서 취소율(Cancellation Rate)을 계산하려고 한다.
1. 취소율 정의
취소율은 다음과 같이 계산한다.
취소된 요청 수:
해당 날짜에 발생한 요청 중 요청 상태(status)가 cancelled_by_client 또는 cancelled_by_driver 이고 클라이언트와 드라이버 모두 차단(banned)되지 않은 요청 수
전체 요청 수:
해당 날짜에 발생한 요청 중 클라이언트와 드라이버 모두 차단되지 않은 전체 요청 수
2. 조건
- 클라이언트와 드라이버 모두 unbanned (banned = 'No') 인 요청만 고려
- 날짜 범위는 2013-10-01 ~ 2013-10-03
- 해당 날짜에 최소 1건 이상의 요청이 있는 날만 결과에 포함
- 취소율은 소수점 둘째 자리까지 반올림
문제출처: https://leetcode.com/problems/trips-and-users/
내가 푼 풀이
SELECT request_at AS "Day",
ROUND(COUNT(CASE WHEN status != 'completed' THEN id END) / COUNT(id), 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 request_at
- 차단되지 않은 사용자들 간의 요청만 필터링
- 날짜별 전체 요청 대비 취소 요청 비율 계산
해당문제는 Hard 레벨이긴 했는데 체감상 Medium 정도? 였다.
올바른 조건추가와 취소율 계산만 잘 해주면 되는 문제!

'Mysql' 카테고리의 다른 글
| Leetcode - Analyze Subscription Conversion 문제풀이 (0) | 2025.12.28 |
|---|---|
| Leetcode - Seasonal Sales Analysis 문제풀이 (0) | 2025.12.26 |
| 해커랭크 - Weather Observation Station 20 문제풀이 (0) | 2025.12.03 |
| 해커랭크 - BST 문제 풀이 (0) | 2025.11.30 |
| 해커랭크 SQL - Ollivander's Inventory 문제풀이 (0) | 2025.09.14 |