본문 바로가기
Tests/Leetcode

[리트코드] 262. Trips and Users (MySQL)

by 코딩하는 금융인 2021. 5. 28.

문제 > leetcode 262. Trips and Users


SQL 스키마 & 문제 설명

출처 : leetcode 262. Trips and Users

 

Trips and Users - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com


▶ 나의 풀이 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;

▶ 쿼리 설명 및 풀이

  1. Status가 'completed'가 아닌 비율 'Cancellation Rate' 비율, Request_at 날짜 Select
  2. 조건문 : Request_at 날짜가 '2013-10-01 ~ 2013-10-03'
  3. 서브쿼리 조건문 : Users table에서 Banned 처리가 안 된 Client_id
  4. Group BY와 count문 활용하여 Cancellation 비율 생성

Users table과 Trips table을 join하지 않고 서브쿼리를 활용하여 풀어봤습니다.

서브쿼리는 총 쿼리 길이를 줄여주고 효율적이라는 장점이 명확하기에 잘 활용하면 좋은 쿼리를 생성하는 데 좋습니다.

 

 

반응형

댓글