按组从所有值中减去最低值的最佳方法是什么?
类似的东西:
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
答案 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;