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
'코딩 테스트 및 알고리즘 > leetcode for google' 카테고리의 다른 글
leetcode hard : Expression Add Operators (0) | 2023.01.22 |
---|---|
leetcode hard : Integer to English Words (0) | 2023.01.22 |
leetcode hard : Sliding Window Maximum (0) | 2023.01.22 |
leetcode hard : Number of Digit One (0) | 2023.01.22 |
leetcode hard : Basic Calculator (0) | 2023.01.21 |