Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从上一列值减去下一列值?_Sql_Sql Server_Rapidminer - Fatal编程技术网

Sql 从上一列值减去下一列值?

Sql 从上一列值减去下一列值?,sql,sql-server,rapidminer,Sql,Sql Server,Rapidminer,我有一个数据集,不知何故,下一个单一数据被添加到前一行的数据之上,每一列的数据之上,这意味着, ID为1的行是原始纯数据,但ID为10的行已将前9个数据集中的数据添加到其自身 我现在想要的是得到每个不同项的原始纯数据,这意味着对于每个ID,我如何从ID,10中减去所有数据?我将不得不减去上一个的ID 9等等 我想在SQL Server或Rapidminer中执行此操作,我正在使用这些工具,有什么想法吗? 以下是一个示例: ID col1 col2 col3 1 12 2 3

我有一个数据集,不知何故,下一个单一数据被添加到前一行的数据之上,每一列的数据之上,这意味着, ID为1的行是原始纯数据,但ID为10的行已将前9个数据集中的数据添加到其自身

我现在想要的是得到每个不同项的原始纯数据,这意味着对于每个ID,我如何从ID,10中减去所有数据?我将不得不减去上一个的ID 9等等

我想在SQL Server或Rapidminer中执行此操作,我正在使用这些工具,有什么想法吗? 以下是一个示例:

ID  col1 col2 col3 
1    12   2     3
2    15   5     5
3    20   8     8
所以ID为3的项目的真正正确数据不是20,8,8,而是(20-15),(8-5),(8-5),所以它的5,3,3。。。 除第一项外,每一项的前一项减去后一项

1 12 2 3

我认为
lag()
是你问题的答案:

select (case when id = 1 then col
             else col - lag(col) over (order by id)
        end)

但是,示例数据可以澄清问题。

在RapidMiner中,系列扩展中包含了
Differention
操作符(默认情况下未安装,需要从RapidMiner Marketplace下载)。这可用于计算相邻示例中属性之间的差异。

使用
滞后序列
操作符尝试一下,它肯定会起作用!要获得此操作员,您应该从RM marketplace安装series extension


此运算符的作用-他复制所选属性并将示例集的每一行推送一个点,因此ID为1的行将获得ID为2的副本等(您还可以指定滞后值)。之后,您可以使用
生成属性
从一个值中减去另一个值

请编辑您的问题并提供示例数据和所需结果。