Я попытался вычислить разницу в значениях, полученных из запроса mysql, где значения данных извлекаются во время кругов соревнования в формате TIME. цель состоит в том, чтобы получить время круга между прибытием для каждого круга. Это стол Times
,
id number time
---------+----------------+--------------------
1 9 00:00:02.000000
2 10 00:00:14.000000
3 9 00:11:09.000000
Mysql
SELECT
t.number, count(*) as laps,
group_concat(time order by t.id separator ',' ) as times,
SEC_TO_TIME(SUM(TIME_TO_SEC(`time`))) as total
FROM
times t
GROUP BY
number
ORDER BY
laps DESC, total ASC
Результат этого запроса:
number laps times total
--------------------------------------------------------------
9 2 00:00:02,00:00:14 00:00:16.000000
10 1 00:11:09 00:11:09.000000
Теперь, что мне нужно, это узнать продолжительность времени на каждом круге с вычитаниями.
Любое предложение, пожалуйста. Благодаря этому результату:
number laps times total
--------------------------------------------------------------
9 2 00:00:02,00:00:12 00:00:14.000000
10 1 00:11:09 00:11:09.000000
Кажется, вы сохранили общее время и хотите рассчитать время круга. Один из способов сделать это — использовать подзапрос;
SELECT t.number, COUNT(1) laps,
GROUP_CONCAT(SEC_TO_TIME(time) ORDER BY t.id) times,
SEC_TO_TIME(SUM(time)) total
FROM (
SELECT t1.id, t1.number,
TIME_TO_SEC(t1.time) - COALESCE(SUM(TIME_TO_SEC(t2.time)), 0) time
FROM times t1
LEFT JOIN times t2 ON t1.number = t2.number AND t2.id < t1.id
GROUP BY t1.id, t1.number, t1.time
) t
GROUP BY number
Подзапрос вычисляет время круга, вычитая все времена для одного и того же числа с меньшим идентификатором из общего времени окончания каждого круга. Внешний запрос выполняет форматирование времени круга в том формате, который вы ищете.
Других решений пока нет …