如何获取后续行之间的差异而没有滞后

问题描述

我有

id value
1 12
1 15
1 17
1 22
1 22
1 23

我需要这样

id  value
1 --
1 3
1 2
1 5
1 0
1 1

你能告诉我如何实现吗?

解决方法

您可以尝试以下-

select id,value-max(value) over(order by id rows between 1 preceding and 1 preceding) as value
from tablename
,

您似乎想要lag(),我猜想是id并基于value的顺序:

select t.*,(value - lag(value) over (partition by id order by value)) as diff
from t
order by value;

也就是说,您的样本数据完全相同。在SQL表中这是不寻常的。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...