문제 > leetcode 262. Trips and Users
SQL 스키마 & 문제 설명
출처 : leetcode 262. Trips and Users
▶ 나의 풀이 in MySQL
#문제 풀이
SELECT Request_at as Day,
ROUND(COUNT(IF(Status != 'completed', TRUE, NULL)) / COUNT(*), 2) AS 'Cancellation Rate'
FROM Trips
WHERE (Request_at BETWEEN '2013-10-01' AND '2013-10-03')
AND Client_id NOT IN (SELECT Users_Id FROM Users WHERE Banned = 'Yes')
GROUP BY Request_at;
▶ 쿼리 설명 및 풀이
- Status가 'completed'가 아닌 비율 'Cancellation Rate' 비율, Request_at 날짜 Select
- 조건문 : Request_at 날짜가 '2013-10-01 ~ 2013-10-03'
- 서브쿼리 조건문 : Users table에서 Banned 처리가 안 된 Client_id
- Group BY와 count문 활용하여 Cancellation 비율 생성
Users table과 Trips table을 join하지 않고 서브쿼리를 활용하여 풀어봤습니다.
서브쿼리는 총 쿼리 길이를 줄여주고 효율적이라는 장점이 명확하기에 잘 활용하면 좋은 쿼리를 생성하는 데 좋습니다.
반응형
'Tests > Leetcode' 카테고리의 다른 글
[리트코드] 601.Human Traffic of Stadium (MySQL) (0) | 2021.05.27 |
---|---|
[리트코드] 197. Rising Temperature (MySQL) (0) | 2021.05.27 |
[leetcode] MySQL > 596. Classes More Than 5 Students (0) | 2021.02.08 |
[leetcode] MySQL > 180. Consecutive Numbers (0) | 2020.09.14 |
[leetcode] MySQL > 183. Customers Who Never Order (0) | 2020.09.12 |
댓글