表1包含一列具有累计值(所有正整数)的列:
id ValuesCum
1 5
2 8
3 20
我想写一条语句,返回每行增加值的额外列。输出应如下所示:
id ValuesCum ValuesInc
1 5 (5)
2 8 3
3 20 12
有人对此有解决方案吗?
如果您正在运行MySQL 8.0,则可以lag()
为此使用窗口函数:
select
t.*,
ValuesCum - lag(ValuesCum, 1, 0) over(order by id) ValuesInc
from mytable t
在早期版本中,另一种方法是相关子查询:
select
t.*,
ValuesCum - (
select coalesce(max(t1.ValuesCum), 0)
from mytable t1
where t1.id < t.id
) ValuesInc
from mytable t
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句