当前位置: 首页 > 面试题库 >

在SQL中从另一行减去一行数据

楚鸿波
2023-03-14
问题内容

我已经迷上了一些SQL,其中有几行数据,我想从上一行中减去一行,并使其一直向下重复。

所以这是表格:

CREATE TABLE foo(
  ID,
  长度
)


插入foo(id,length)VALUES(1,1090)
插入foo(id,length)VALUES(2,888)
插入foo(id,length)值(3,545)
插入foo(id,length)VALUES(4,434)
插入foo(id,length)VALUES(5,45)

我希望结果显示第三列,称为差异,即从下面的一列减去第一行,最后一行从零减去。

+ ------ + ------------------------ +
| id |长度| 差异|
+ ------ + ------------------------ +
| 1 | 1090 | 202 |
| 2 | 888 | 343 |
| 3 | 545 | 111 |
| 4 | 434 | 389 |
| 5 | 45 | 45 |

我已经尝试过自我连接,但是我不确定如何限制结果,而不是让结果不断循环。我不能确定id值对于给定的结果集是连续的,所以我不使用该值。我可以扩展架构以包括某种顺序值。

这是我尝试过的:

SELECT id,f.length,f2.length,(f.length-f2.length)AS差异
从foo f,foo f2

谢谢您的协助。


问题答案:

这可能会对您有所帮助。

select a.id, a.length, 
coalesce(a.length - 
    (select b.length from foo b where b.id = a.id + 1), a.length) as diff
from foo a


 类似资料:
  • 问题内容: 我要执行的操作类似于合并。例如,通过合并,我们得到一个数据帧,其中包含第一个AND第二个数据帧中存在的行。通过合并,我们得到一个数据帧,该数据帧在第一个或第二个数据帧中都存在。 我需要的是一个数据帧,其中包含第一个数据帧中存在的行而第二个数据帧中不存在的行?有快速而优雅的方法吗? 问题答案: 如下所示呢? 只要有一个非关键的通用命名列,就可以让在sufffexes上执行的工作(如果没有

  • 问题内容: 我只想知道如何从$ row [posts_remaining]中出现的数字中减去1 换一种说法… 这将给我我的结果,其中row posts_remaining = {THE NUMBER} 但是我想通过从中减去一个数字,然后在旧数字所在的位置设置新数字来更新返回的数字。 我希望我不要让这个令人困惑。很难解释。 另外…为了进行此操作,我是否应该将行“ posts_remaining”设置

  • 问题内容: 我有两个arrayLists,我试图从另一个中“减去”一个arrayList。例如,如果我有一个arrayList [1,2,3],而我试图减去[0,2,4],则结果arrayList应该为[1,3]。 这是我的代码。 我的代码在某些情况下可以正常工作,例如if ,它将给我的结果。但是,如果我尝试像和 我得到这个异常: 这是我想出的代码。我已经通过它进行了测试,对我来说我认为它应该起作

  • 问题内容: 同时支持MySQL和SQL Server我需要从日期中减去几天。可以使用ANSI SQL完成此操作,还是需要维护两个版本? 例如。我有这个用于MySQL: 问题答案: ANSI SQL 2003规范没有公开可用的版本,但是没有厂商完全支持它。无论如何,这两者之间的语法有足够的差异,可以为每个编写不同的代码。 MySQL具有以下功能: SQL Server具有一个功能(不带下划线): 同

  • 问题内容: 我在mySQL中有一个带有以下各列的表: TRANS_TYPE可以是“ DRINV”(销售)或“ DRCDT”(信用)。 我想获取每个客户的总销售额,因此到目前为止,我的查询是: 问题是这是销售 和 积分的总和,而不是销售减去积分。我希望结果是 是否可以在SQL查询中执行此操作? 问题答案:

  • 我需要这个社区的R专家的帮助:set。种子(1234)x 我想得到这个输出: 谢谢你的帮助!