【发布时间】:2020-09-12 16:04:44
【问题描述】:
上面是一张桌子,我需要得到轮胎覆盖的总距离。
寻找一种方法来获得总和的差值以获得所覆盖的总距离。
如果通过“删除”和“插入”动作共享之间的差值之和得到每个总距离。
最终结果应该是 1100+300 = 1400
【问题讨论】:
标签: mysql sql select group-by sum
上面是一张桌子,我需要得到轮胎覆盖的总距离。
寻找一种方法来获得总和的差值以获得所覆盖的总距离。
如果通过“删除”和“插入”动作共享之间的差值之和得到每个总距离。
最终结果应该是 1100+300 = 1400
【问题讨论】:
标签: mysql sql select group-by sum
如果每个tyre 和position 总是只有一个'insert' 和一个'removal' 行,则可以使用条件聚合来计算元组覆盖的距离,然后在@987654325 处添加另一层聚合@级别:
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
【讨论】:
group by 子句之后添加having count(*) = 2。