-
-
Notifications
You must be signed in to change notification settings - Fork 9k
/
Copy pathSolution.sql
37 lines (37 loc) · 938 Bytes
/
Solution.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# Write your MySQL query statement below
WITH RECURSIVE
Month AS (
SELECT 1 AS month
UNION
SELECT month + 1
FROM Month
WHERE month < 12
),
S AS (
SELECT month, driver_id, join_date
FROM
Month AS m
LEFT JOIN Drivers AS d
ON YEAR(d.join_date) < 2020
OR (YEAR(d.join_date) = 2020 AND MONTH(d.join_date) <= month)
),
T AS (
SELECT driver_id, requested_at
FROM
Rides
JOIN AcceptedRides USING (ride_id)
WHERE YEAR(requested_at) = 2020
)
SELECT
month,
IFNULL(
ROUND(COUNT(DISTINCT t.driver_id) * 100 / COUNT(DISTINCT s.driver_id), 2),
0
) AS working_percentage
FROM
S AS s
LEFT JOIN T AS t
ON s.driver_id = t.driver_id
AND s.join_date <= t.requested_at
AND s.month = MONTH(t.requested_at)
GROUP BY 1;