mysql中两行之间的差异之和

时间:2020-05-25 23:16:18

标签: mysql sql select group-by sum

enter image description here

上面是一张桌子,我需要得到轮胎覆盖的总距离。

寻找一种方法来求出差值之和,以得出所覆盖的总距离。

每个总距离(如果通过“删除”和“插入”操作共享之间的差总和得出)。

最终结果应为1100 + 300 = 1400

1 个答案:

答案 0 :(得分:0)

如果每个'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