Опираясь на предыдущий вопрос, здесь (stackoverflow): Как эффективно предварительно фильтровать строки в сочетании с объединением?
Более универсальное решение этой проблемы было предоставлено Nick , как показано ниже.
Особо следует отметить использование "diff" второй раз для "diff / 2", для которого я теперь успешно использовал эту концепцию несколько раз.
Проблема в том, что у меня есть другой пример, когда он не работает, и я не могу понять, почему.Похоже на проблему "разбора" MariaDB / mysql, но я новичок.; -)
Спасибо за любые идеи.= D
Функциональный / рабочий пример:
SELECT scanid,
event_id,
object_id,
obj_timestamp,
obj_counter,
diff,
diff / 2 AS hdiff
FROM (SELECT t1.scanid,
t1.event_id,
t1.object_id,
t1.obj_timestamp,
t1.obj_counter,
Timediff(t1.obj_timestamp, t2.obj_timestamp) AS diff
FROM event_data AS t1
LEFT JOIN event_data AS t2
ON t2.obj_counter = t1.obj_counter - 1
AND t2.object_id = t1.object_id
WHERE t1.object_id = 2
ORDER BY t1.obj_counter) AS diffs
Мой код - это работает, если я не пытаюсь заменить показанную строку комментарием:
SET @distance=1000;
SELECT event_id,
timestamp,
t1.overall_time,
TIME_TO_SEC(t1.overall_time) AS overall_secs,
-- @distance / overall_secs AS overall_kph
@distance / TIME_TO_SEC(t1.overall_time) AS overall_kph
FROM (SELECT event_id,
timestamp,
TIMEDIFF(MAX(timestamp), MIN(timestamp)) AS overall_time
FROM summary
GROUP BY event_id) AS t1;
Ошибкадано, когда я пытаюсь сослаться на total_secs сразу после того, как он был указан как столбец (замените строку @distance комментарием, чтобы увидеть эту ошибку):
ERROR 1054 (42S22) at line 120 in file: 'summary.sql': Unknown column 'overall_secs' in 'field list'