WITH t1 AS (
SELECT route_id,
rider_name,
completion_min,
ride_date,
ride_id,
avg_speed_kmh
FROM (
SELECT route_id,
rider_name,
completion_min,
ride_date,
ride_id,
avg_speed_kmh,
ROW_NUMBER() OVER(PARTITION BY route_id,rider_name ORDER BY completion_min,ride_date,ride_id) AS rnk
FROM ride_records
) b
WHERE rnk=1
)
select route_name,
distance_km,
rider_name,
ride_date,
completion_min,
avg_speed_kmh
from cycling_routes c
inner join lateral(
select t1.*
from t1
where t1.route_id=c.route_id
order by completion_min,ride_date,ride_id
limit 2
) b on true