📖 Story
Uber · Driver Earnings
Uber HQ, Friday evening. Product manager Sneha walks in: "We need top earning drivers per city for bonus distribution." Time to combine trips and drivers data.
Uber · Driver Earnings — practice this real-world SQL scenario live in your browser.
SELECT d.driver_id, d.driver_name, d.city, t.fare
FROM drivers d
JOIN trips t ON d.driver_id = t.driver_id;
SELECT d.driver_id,
d.driver_name,
d.city,
SUM(t.fare) AS total_earnings
FROM drivers d
JOIN trips t ON d.driver_id = t.driver_id
GROUP BY d.driver_id, d.driver_name, d.city
ORDER BY total_earnings DESC;
SELECT driver_id, driver_name, city, total_earnings
FROM (
SELECT d.driver_id,
d.driver_name,
d.city,
SUM(t.fare) AS total_earnings,
ROW_NUMBER() OVER (
PARTITION BY d.city
ORDER BY SUM(t.fare) DESC
) AS rn
FROM drivers d
JOIN trips t ON d.driver_id = t.driver_id
GROUP BY d.driver_id, d.driver_name, d.city
) ranked
WHERE rn <= 3;