如何比较表中最后一个和第二个条目的值?

Ima*_*ree 5 sql oracle syntax

我在Oracle中有一个名为quotes的表,有两列:datevalue.

我想比较表中最后一个条目和倒数第二个条目的值.

在这个例子中,我想在一行中获得13.1和11.1的日期以及每个日期的值之间的差异(10-5 = 5).


行情表:

日期 - 价值

13.1.2010 - 10

11.1.2010 - 5

10.1.2010 - 2

8.10.2010 - 1


编辑:

我想有一个更复杂的表与另一个列companyId.我需要为每家公司提供物品.表格如下所示:

行情表:

日期 - 价值 - CompanyId

13.1.2010 - 10 - 10

11.1.2010 - 5 - 10

10.1.2010 - 2 - 10

8.10.2010 - 1 - 10

12.1.2010 - 7 - 20

10.1.2010 - 3 - 20

9.1.2010 - 2 - 20

8.10.2010 - 2 - 20

在这种情况下,我想获得两条线(但一般只需要获得与公司数量一样多的线) - 每个公司一条线将返回两个日期以及最新值和第二个最新值之间的差异.所以在这种情况下它会返回:

companyId 10 13.1和11.1和5以及另一行如下:

companyId 20 12.1和10.1 and 4(7-3 = 4).

Qua*_*noi 3

SELECT  *, value - nextvalue AS diff
FROM    (
        SELECT  m.*, LEAD(value) OVER (ORDER BY date DESC) AS nextvalue
        FROM    mytable m
        ORDER BY
                date DESC
        )
WHERE   rownum = 1
Run Code Online (Sandbox Code Playgroud)

更新:

要按公司选择结果:

SELECT  value - nextvalue AS diff
FROM    (
        SELECT  m.*,
                LEAD(value) OVER (PARTITION BY companyId ORDER BY date DESC) AS nextvalue,
                ROW_NUMBER() OVER (PARTITION BY companyId ORDER BY date DESC) AS rn
        FROM    mytable m
        )
WHERE   rn = 1
Run Code Online (Sandbox Code Playgroud)