๐ข ๋ณธ ํฌ์คํ ์ ํ์ฉ๋๋ ๊ธฐ๋ณธ ๋ฌธ์ ๋ฐ ์๋ฃ ์ถ์ฒ๋
๋ฆฌํธ์ฝ๋ Problems, https://leetcode.com/problemset/all/ ์์ ๋ฐํ๋๋ค.
โ ๋ฌธ์
https://leetcode.com/problems/department-highest-salary/
โ ํ์ด
The cancellation rate is computed by dividing the number of canceled (by client or driver) requests
with unbanned users by the total number of requests with unbanned users on that day.
Write a SQL query to find the cancellation rate of requests with unbanned users (both client and driver must not be banned) each day between "2013-10-01" and "2013-10-03".
> 2013.10.01 ๋ถํฐ 2013.10.03 ๊น์ง ์ทจ์์จ์ ์ฐพ๋ ์ฟผ๋ฆฌ๋ฅผ ๋ง๋ ๋ค.
๋จ, ๊ณ ๊ฐ๊ณผ ์ด์ ์๊ฐ ๋ชจ๋ ๊ธ์ง ์ํ์ฌ์๋ ์๋๋ค.
Round Cancellation Rate to two decimal points. Return the result table in any order.
> ์ทจ์์จ์ ์์์ ๋์งธ์๋ฆฌ๊น์ง ๋ฐ์ฌ๋ฆผํ๊ณ ๊ฒฐ๊ณผ ์์๋ ์์๋ก ๋ฐํ
SELECT T2.day,
Round(avg(T2.status like '%cancel%'), 2) `Cancellation Rate`
FROM (
SELECT T.request_at Day,
T.status status
FROM Trips T
LEFT JOIN Users U
ON (T.client_id = U.users_id)&(U.role = 'client')
LEFT JOIN Users U2
ON (T.driver_id = U2.users_id)&(U2.role='driver')
WHERE T.request_at BETWEEN '2013-10-01' AND '2013-10-03'
AND U.banned = 'No'
AND U2.banned = 'No') T2
GROUP BY T2.day
;
ํ ์ด๋ธ์ ์์ฝํํฉ ํ ์ด๋ธ์ธ Trips
์ฌ์ฉ์ ์ ๋ณด ํ ์ด๋ธ์ธ Users
FROM ์ ์ฝ๋ ํ์ด
Trips ํ ์ด๋ธ์ ์ฌ์ฉ์(๊ณ ๊ฐ, ์ด์ ์)์ ๋ํ ๊ธ์ง ์ ๋ณด๋ฅผ ๋ฃ์ด์ค์ผํด์
Trips ํ ์ด๋ธ ๊ธฐ์ค user ํ ์ด๋ธ์ ๋๋ฒ left join ํ๋ฉด์
์ฒซ๋ฒ์งธ ์กฐ์ธ ์กฐ๊ฑด์ ์ฌ์ฉ์์ค ๊ณ ๊ฐid, ๊ทธ๋ฆฌ๊ณ role์ด ๊ณ ๊ฐ
๋๋ฒ์จฐ ์กฐ์ธ ์กฐ๊ฑด์ ์ฌ์ฉ์์ค ์ด์ ์id ๊ทธ๋ฆฌ๊ณ role์ด ์ด์ ์
SELECT์ ํ์ด
์ด ์กฐ์ธ ํ ์ด๋ธ์์ ์์ฝ ๋ ์ง์, ์์ฝ ์ํ๋ฅผ ์ถ๋ ฅํ๋๋ฐ
์กฐ๊ฑด์ 1) ์์ฒญ์ผ์ 2013-10-01 ~ 2013-10-03 ์ผ๋ก ์ ํ > Between '2013-10-01' and '2013-10-03'
2) '์ฌ์ฉ์(๊ณ ๊ฐ, ์ด์ ์)๋ ๋ชจ๋ ๊ธ์ง์ํ๊ฐ ์๋์ฌ์ผ ํ๋ค '์ WHERE์ ์ ๋ฃ์ด์ค ๊ฒฐ๊ณผ T2์์
์์ฒญ์ผ์(request_at)์ ์ผ์๋ณ ์ทจ์์จ(๋ฐ์ฌ๋ฆผํด์ ์์ ๋์งธ์๋ฆฌ๊น์ง)์ ๊ตฌํ๋ค.
์ผ์๋ณ๋ก ๊ตฌํ๊ธฐ ์ํด ์์ฒญ์ผ์๋ณ ๊ทธ๋ฃนํ > group by T2.day
์ทจ์์จ์ ํ๊ท > agv(T2.status like '%cancel%')
์ทจ์์จ ํ๊ธฐ๋ ์์์ ๋์งธ์๋ฆฌ๊น์ง > round(avg(T2.status like '%cancel%'), 2)
'Growth ๐ณ > Practice ๐ป' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[LeetCode] 176. Second Highest Salary (0) | 2022.08.26 |
---|---|
[LeetCode] 1179. Reformat Department Table (0) | 2022.08.26 |
[Programmers] ์ฐ์ ์ ์๊ฑฐํธ๊ฐ ๋ด๊ธด ์ฅ๋ฐ๊ตฌ๋ (0) | 2022.08.25 |
[Programmers] ์ ์ ์๊ฐ ๊ตฌํ๊ธฐ(2) (1) | 2022.08.25 |
[LeetCode] 184. Department Highest Salary (0) | 2022.08.25 |