Low-rated drivers

aggregations

Low-rated drivers

Uber SQL Interview Question

Uber's driver quality team reaches out to drivers whose riders keep giving them low ratings. Riders don't always leave a rating, and a single bad rating isn't enough to act on.

Find drivers with at least 2 rated rides and an average rating below 4. Return each driver's driver_name and their average rating as avg_rating, rounded to 2 decimal places. Rides without a rating don't count. Sort by avg_rating from lowest to highest, then by driver_name.

Asked of

  • Data Analyst
  • Business Analyst
  • BI Analyst
  • Product Analyst
  • Analytics Engineer

ridesTable20 rows

Column NameType
ride_idBIGINT
driver_idBIGINT
cityVARCHAR
requested_atTIMESTAMP
fareDOUBLE
ratingBIGINT

driversTable10 rows

Column NameType
driver_idBIGINT
driver_nameVARCHAR
vehicle_typeVARCHAR
joined_dateDATE

ridesExample Input

ride_iddriver_idcityrequested_atfarerating
7001301Chicago2024-06-03 08:12:0018.45
7002302Chicago2024-06-03 08:40:0032.14
7003303Austin2024-06-03 09:05:0054.755
7004304Austin2024-06-03 09:30:0012.9NULL
7005301Chicago2024-06-03 11:15:0021.64
7006305Seattle2024-06-03 12:02:0087.25
7007306Seattle2024-06-03 12:45:0016.33
7008302Chicago2024-06-03 13:20:0027.8NULL
7009307Austin2024-06-03 14:10:00414
7010303Austin2024-06-03 15:35:0063.255
7011304Austin2024-06-03 16:05:0014.22
7012308Seattle2024-06-03 17:40:0095.64
7013305Seattle2024-06-03 18:15:0076.45
7014306Seattle2024-06-03 18:50:0019.94
7015301Chicago2024-06-03 19:30:0023.15
7016307Austin2024-06-03 20:05:0038.6NULL
7017302Chicago2024-06-03 21:10:0029.43
7018308Seattle2024-06-03 22:00:00102.35
7019304Austin2024-06-03 22:40:0011.753
7020303Austin2024-06-03 23:15:0058.94

driversExample Input

driver_iddriver_namevehicle_typejoined_date
301Maya PatelUberX2021-04-12
302Luis RomeroComfort2020-09-01
303Grace KimUberXL2022-01-20
304Omar HaddadUberX2023-03-08
305Elena PetrovaBlack2019-11-15
306Sam OkoyeUberX2022-07-30
307Priya IyerComfort2021-12-05
308Noah FischerBlack2020-05-22
309Jordan EllisUberX2024-02-14
310Carmen DiazBlack2023-10-01

Example Output

driver_nameavg_rating
Omar Haddad2.5
Luis Romero3.5
Sam Okoye3.5

Explanation

Omar Haddad has three rides, but one has no rating, so only his ratings of 2 and 3 count, for an average of 2.5. Luis Romero and Sam Okoye both average 3.5, so they are sorted by name. Priya Iyer has only one rated ride, so she is left out.

The example above is a small slice of the data. Your query runs against the full tables.