Если всегда есть только одна 'insert'
и одна 'removal'
строка на tyre
и position
, вы можете использовать условную агрегацию для вычисления расстояния, пройденного кортежем, а затем добавить еще один уровень агрегации на tyre
уровень:
select tyreId, sum(distance_covered) distance_covered
from (
select
tyreId,
position,
sum(case action when 'removal' then distance else - distance end) distance_covered
from mytable
where action in ('insert', 'removal')
group by tyreId, position
)t
group by tyreId