top_drives/bestCarsPerTrack.sql

51 lines
1.1 KiB
SQL

WITH RECURSIVE rq_range AS (
SELECT DISTINCT rq from cars
),
track_combinations AS (
SELECT DISTINCT track_id, track_type
FROM car_track_times
),
ranked_cars AS (
SELECT
rq_range.rq AS max_rq,
t.track_id,
t.track_type,
c.rq,
c.brand,
c.onlyName,
c.year,
t.configuration,
t.time,
ROW_NUMBER() OVER (
PARTITION BY rq_range.rq, t.track_id, t.track_type
ORDER BY t.time ASC
) AS rank
FROM
rq_range
CROSS JOIN
track_combinations tc
JOIN
car_track_times t ON tc.track_id = t.track_id AND tc.track_type = t.track_type
JOIN
cars c ON t.car_rid = c.rid
WHERE
t.time > 0 -- Exclude invalid times
AND t.time IS NOT NULL
AND c.rq <= rq_range.rq
)
SELECT
max_rq,
track_id,
track_type,
rq,
brand,
onlyName,
year,
configuration,
time AS best_time
FROM
ranked_cars
WHERE
rank = 1 -- Only the best car per combination
ORDER BY
max_rq, track_id, track_type;