从组中减去值

时间:2019-10-13 17:25:32

标签: mysql sql

按组从所有值中减去最低值的最佳方法是什么?

类似的东西:

ID    Name         Value    
1      A             10    
1      B             40    
1      C             100    
2      A             20     
2      B             80    
2      C             90    
3      A             4    
3      B             7    
3      C             8

转到:

ID    Name         Value    
1      A             0    
1      B             30    
1      C             90    
2      A             0     
2      B             60    
2      C             70    
3      A             0
3      B             3    
3      C             4

1 个答案:

答案 0 :(得分:1)

使用窗口功能:

select id, name, value - min(value) over (partition by id) as 
from t;

如果您实际上要更新值,则在MySQL中,聚合和join可能是最简单的解决方案:

update t join
       (select id, min(value) as min_value
        from t
        group by id
       ) tt
       on t.id = tt.id
    set value = value - min_value
    where min_value <> 0;