Oracle LAG / LEAD分析函数是否作为连接?

时间:2014-05-27 11:41:10

标签: oracle

滞后 / 主要分析函数允许根据官方文档访问上一行/下一行而不使用连接技术:

这是否意味着如果我包含不是 lag / lead 的字段 - Oracle会在这些字段上加入吗?

因此,如果我查询货币汇率(找到漏洞 - 没有定义汇率的那一天):

 select CURRENCY, RATE, XDATE, lead(XDATE) over (order by XDATE) from CURRENCY_RATE

我的引导(XDATE) XDATE 相同的 CURRENCY

线索表达式中的分区关键字必须在 CURRENCY 上用于实现此目标吗?

2 个答案:

答案 0 :(得分:1)

您的查询在没有货币考虑的情况下成为领先者。 如果要按日期对任何货币进行排序,则需要按关键字添加分区:

select CURRENCY,
       RATE,
       XDATE,
       lead(XDATE) over(partition by CURRENCY order by XDATE)
  from CURRENCY_RATE
;

答案 1 :(得分:0)

我在http://www.orafaq.com/node/55中找到了对语义分析函数的良好解释:

  • 某些功能支持分区内的 window_clause ,以进一步限制它们所操作的记录。在没有任何 window_clause 的情况下,将对分区子句的所有记录计算分析函数。

  • 函数SUM,COUNT,AVG,MIN,MAX是常见的分析函数,其结果不依赖于记录的顺序。

  • LEAD,LAG,RANK,DENSE_RANK,ROW_NUMBER,FIRST,FIRST VALUE,LAST,LAST VALUE等函数取决于记录的顺序。

另一个不错的文档:http://www.oracle-base.com/articles/misc/analytic-functions.php