在 Db2 中如何计算相邻行的差异
Posted
技术标签:
【中文标题】在 Db2 中如何计算相邻行的差异【英文标题】:In Db2 how to calculate difference of adjacent rows 【发布时间】:2012-01-29 13:03:13 【问题描述】:我想将范围计算为row1-row2,需要db2查询中的帮助来获取范围列
name,age,range
a,40,0
b,20,20
c,7,13
d,5,2
e,1,4
范围列计算
first value is 0
(40-20)
(20-7)
(7-5)
(5-1)
【问题讨论】:
另请参阅此问题:Optimizing ROW_NUMBER() in SQL Server,了解实现相同结果的各种其他方法。 @ypercube:我认为该帖子与此处无关,因为它涉及使用窗口函数的值连接结果集。此外:性能是非常具体的实现。 @a_horse_with_no_name:我同意性能是特定于实现的。但是,如果没有lag()
函数,您确实需要使用 Row_Number()
窗口函数(或其他一些自联接方式)进行自联接。
@ypercube:我同意。但是 DB2 确实有 lag()
函数 :)
我同意,对于具有该功能的版本,这是最好的方法。
【参考方案1】:
SELECT name,
age,
(lag(age, 1, age) over (order by age desc)) - age as agediff
FROM your_table
ORDER BY age desc
【讨论】:
以上是关于在 Db2 中如何计算相邻行的差异的主要内容,如果未能解决你的问题,请参考以下文章
DB2,在尝试计算提供的时间戳和存储的时间戳之间的差异时,出现错误“函数的调用不明确”