【问题标题】:sum of differences between two rows in mysqlmysql中两行之间的差异总和
【发布时间】:2020-09-12 16:04:44
【问题描述】:

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

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

如果通过“删除”和“插入”动作共享之间的差值之和得到每个总距离。

最终结果应该是 1100+300 = 1400

【问题讨论】:

标签: mysql sql select group-by sum


【解决方案1】:

如果每个tyreposition 总是只有一个'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 

【讨论】:

  • 有没有办法可以消除那些可能具有“插入”行为的行为,以防止产生负数
  • @TogetherMovingForward:您可以在子查询中的group by 子句之后添加having count(*) = 2
猜你喜欢
  • 1970-01-01
  • 2014-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多