Этот результат
| rider | laptime | Gap | lapno | ts |
|-----------------|----------|--------|-------|-------|
| Marc MARQUEZ | 2799.627 | 0 | 30 | 329.3 |
| Valentino ROSSI | 2803.143 | 3.516 | 30 | 319.7 |
производства:
SELECT
`rider`, laptime, laptime - minlaptime as Gap, lapno, ts
FROM (
SELECT
`rider`, laptime, lapno, ts, @lap := IF(@lap = 0.0, laptime, @lap) as minlaptime
FROM (
SELECT `rider`, SUM(laptime) as laptime , COUNT(`lapno`) as lapno
, MAX(`topspeed`) AS ts
FROM
(SELECT
`lapno`,`rider`, (t1+t2+t3+t4) as laptime , `topspeed`
FROM `a_lap_time` as t_laptime
) AS a
GROUP BY a.rider
) AS b
CROSS JOIN (select @lap :=0) var
ORDER BY `lapno` DESC, laptime ASC
) AS c
переменной: @lap "привязанного" к каждой строке с помощью перекрестного соединения, затем с помощью ORDER BY, чтобы получить минимальный общий латфейс мы передаем это значение в @lap. Как только это будет сделано, мы получим значение 2799.627 для каждой строки, и мы можем вычислить Gap.
Смотрите эту sqlfiddle: http://sqlfiddle.com/#!9/bd71f/6
для поз, а также:
SELECT
`rider`, laptime, laptime - minlaptime as Gap, lapno, ts, pos
FROM (
SELECT
`rider`, laptime, lapno, ts
, @lap := IF(@lap = 0.0, laptime, @lap) as minlaptime
, @pos := @pos + 1 as pos
FROM (
SELECT `rider`, SUM(laptime) as laptime , COUNT(`lapno`) as lapno
, MAX(`topspeed`) AS ts
FROM
(SELECT
`lapno`,`rider`, (t1+t2+t3+t4) as laptime , `topspeed`
FROM `a_lap_time` as t_laptime
) AS a
GROUP BY a.rider
) AS b
CROSS JOIN (select @lap :=0, @pos := 0) var
ORDER BY `lapno` DESC, laptime ASC
) AS c
Результат:
| rider | laptime | Gap | lapno | ts | pos |
|-----------------|----------|-------|-------|-------|-----|
| Marc MARQUEZ | 2799.627 | 0 | 30 | 329.3 | 1 |
| Valentino ROSSI | 2803.143 | 3.516 | 30 | 319.7 | 2 |
Когда вы говорите разное время круга, что вы имеете в виду? –
извините за минута, в этом случае 2803.143 - 2799.627 – vincmeister
Итак, Маркес закончил через 0 секунд? – Strawberry