https://leetcode.com/problems/trips-and-users/description/

 

Trips and Users - LeetCode

Trips and Users - Table: Trips +-------------+----------+ | Column Name | Type | +-------------+----------+ | id | int | | client_id | int | | driver_id | int | | city_id | int | | status | enum | | request_at | date | +-------------+----------+ id is the

leetcode.com

 

SQL문제.. 취준할때 이후로 안풀어본듯하다.

sql은 잘 몰라서 인터넷을 참고했다.

 

SELECT Request_at AS Day,

일단 첫 column이 Day라는 이름의 날짜가 나와야되니 이렇게 해주고

두번째 column은 Cancellation Rate라는 이름이니 ~~ as 'Cancellation Rate'가 와야될것이다.

~~에 올것은 ROUND(SUM(IF(status = 'completed', 0, 1))/COUNT(status),2)

반올림 하라그랬으니까 round(~~, 2)

SUM(IF(status = 'completed', 0, 1))       /    COUNT(status)

status가 completed면 0 아니면 1

즉 미완료 작업을 1로 두고 sum 해서 count를 구하고 그걸 count(status) 즉 전체 개수로 나눠서 취소율을 구한다.

 

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 Trips.Request_at

둘다 밴됐다는 조건과 날짜조건을 추가해준다.

 

SELECT Request_at AS Day, ROUND(SUM(IF(Status = 'completed', 0, 1))/COUNT(Status),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 Trips.Request_at

+ Recent posts