mysql - 如何在SQL中选择列的增量总和
问题描述
我有一个包含 GSP 位置的数据库。我想得到海拔高度的总和。
id altitude
1 0
2 20 -> gained 20
3 10 -> gained 0
4 50 -> gained 40
此示例应输出 60 (20 + 40)。
解决方案
您可以使用lag()
:
select t.*,
(case when lag(altitude) over (order by id) < altitude
then altitude - lag(altitude) over (order by id)
else 0
end) as altitude_gain
from t
在许多数据库中,这可以简化为:
select t.*,
greatest(altitude - lag(altitude) over (order by id), 0) as altitude_gain
from t;