Repeat Rider-Driver Pairs

Find rider and driver pairs that completed at least 3 trips together.

Expected output

rider_id, driver_id, trips. Sorted by trips descending, then rider_id, then driver_id.

Row order is checked. Column names are not checked; numbers are compared to 2 decimals.

Dataset: Ride-share marketplace

Trip requests in four US cities from January to March 2026, with drivers, riders, fares and ratings.

drivers

One row per driver. A driver only serves their own city.

driver_idINTEGERprimary key
nameTEXT
cityTEXT
joined_dateTEXTYYYY-MM-DD
vehicle_typeTEXTstandard, comfort or xl
riders

One row per rider account.

rider_idINTEGERprimary key
nameTEXT
cityTEXT
signup_dateTEXTYYYY-MM-DD
trips

One row per trip request, whatever its outcome.

trip_idINTEGERprimary key, increases with requested_at
rider_idINTEGER
driver_idINTEGERNULL when no driver was assigned
cityTEXT
requested_atTEXTYYYY-MM-DD HH:MM:SS (UTC)
dropoff_atTEXTNULL unless completed
statusTEXTcompleted, cancelled_rider, cancelled_driver or no_driver
distance_kmREALestimated route distance
fareREALUSD, NULL unless completed
rider_ratingINTEGER1-5 stars given by the rider, NULL if not rated

Engine: SQLite. Dates are text (YYYY-MM-DD); use strftime(), date() and julianday() for date math.

Related problems

SQLite · runs in your browser
Ctrl/⌘ + Enter to run
Expected output preview (61 rows, order matters)
rider_iddriver_idtrips
751315
90914
60413

Showing 3 of 61 rows.

Hints

Worked solution

Run at least one query to unlock it.