`

Oracle LAG 和 LEAD 函数

阅读更多

LAG 是取前N行的数据

LEAD是取后去N行数据

 

语法:

    LAG(exp_str,offset,defval)over()

    LEAD(exp_str,offset,defval)over()

    --exp_str 要取的列

    --offset 取偏移后的第几行数据

    --defval 没有符合条件的默认值

    eg.

droptable tabA;

createtable tabA(colA number);

insertinto tabA values(1);

insertinto tabA values(2);

insertinto tabA values(4);

insertinto tabA values(8);

insertinto tabA values(16);

insertinto tabA values(32);

insertinto tabA values(64);

 

select

  colA c1,

  lag(colA,1,0)over(orderbyrownum) c2,

  lag(colA,2,99)over(orderbyrownum) c3,         ---99位默认值

  lead(colA,1,0)over(orderbyrownum) c4,         ---Lead是向下偏移的意思

  colA-lag(colA,1,0)over(orderbyrownum) c5

from tabA;

 

   C1  C2  C3  C4  C5

1   1   0   99  2   1

2   2   1   99  4   1

3   4   2   1   8   2

4   8   4   2   16  4

5   16  8   4   32  8

6   32  16  8   64  16

7   64  32  16  0   32

 

 

select

  colA c1,

  lag(colA,1,0)over(orderbyrownum) c2,

  lag(colA,2,99)over(orderbyrownum) c3,

  lead(colA,1,0)over(orderbyrownumdesc) c4,   ----------如果此处有desc,则以这个为倒序的顺序,

  colA-lag(colA,1,0)over(orderbyrownum) c5

from tabA;

 

   C1  C2  C3  C4  C5

1   64  32  16  32  32

2   32  16  8   16  16

3   16  8   4   8   8

4   8   4   2   4   4

5   4   2   1   2   2

6   2   1   99  1   1

7   1   0   99  0   1

 

 

 

 

分享到:
评论

相关推荐

    oracle求同比,环比函数(LAG与LEAD)的详解

    Lag和Lead函数可以在一次查询中取出同一字段的前N行的数据和后N行的值。这种操作可以使用对相同表的表连接来实现,不过使用LAG和LEAD有更高的效率。 代码如下:CREATE TABLE salaryByMonth( employeeNo varchar2(20)...

    oracle lag 实现同一字段的前N行的数据和后N行的值

    ### Oracle LAG 和 LEAD 函数简介 #### 1. LAG 函数 `LAG`函数是Oracle提供的一种强大的窗口函数,它可以用来访问当前行前面指定行的数据。其基本语法如下: ```sql LAG (expr, [offset], [default]) ``` - `expr`:...

    oracle的分析函数汇总

    例如,可以使用 Rollup 函数对数据进行分组和汇总,使用 Rank 函数对数据进行排名,使用 Lag 和 Lead 函数对数据进行延迟和前导操作,使用 Sum 和 Avg 函数对数据进行汇总和平均计算,使用 Ratio_to_Report 函数对...

    Oracle中的分析函数详解

    这篇文档将深入探讨Oracle中的分析函数,帮助你更好地理解和利用这一功能。 一、什么是分析函数 分析函数(Analytic Functions)是Oracle SQL中的高级特性,它们在数据集上执行计算,并返回基于分组或排序的数据...

    oracle数据仓库分析函数汇总

    Oracle数据仓库分析函数是数据库查询和分析中的重要工具,尤其对于商业智能(BI)和数据仓库项目来说,它们能够提供深度的数据洞察。本资源“oracle数据仓库分析函数汇总”聚焦于Oracle数据库中的分析函数,尤其是与...

    Oracle开发的over函数

    - **LAG、LEAD函数**:这类函数允许在结果集中向前或向后检索值,避免数据的自连接。 - **VAR_POP、VAR_SAMP、STDEV_POPE及线性的衰减函数**:计算任何未排序分区的统计值。 3. **PARTITION子句** 分区子句用于...

    oracle 110个常用函数.zip

    7. 分组和窗口函数:GROUP BY用于分组数据,RANK(), DENSE_RANK(), ROW_NUMBER()用于排序和排名,LEAD()和LAG()获取相邻行的值。 8. 模式匹配函数:LIKE和INSTR()用于在WHERE子句中进行模式匹配。 9. 随机函数:...

    oracle开窗函数学习技巧总结

    4. **偏移量函数**:例如`LAG()`和`LEAD()`,用于访问前一行或后一行的数据。 #### 四、具体示例解析 ##### 示例1:计算每个班级的最高分 ```sql SELECT name, class, s, RANK() OVER (PARTITION BY class ORDER ...

    oracle 10G函数大全(中文)

    - 分析函数如ROW_NUMBER、RANK、DENSE_RANK、LAG、LEAD等,用于窗口查询,提供行间计算功能。 5. **连接和比较函数**: - CONCAT、||用于字符串连接。 - LIKE、IN、BETWEEN、NOT BETWEEN用于查询条件的构建。 -...

    oracle函数分类.rar

    **分析函数**如`RANK`、`DENSE_RANK`、`ROW_NUMBER`和`LAG`、`LEAD`等,提供了一种窗口函数的功能。它们可以在结果集的每一行上执行计算,而不仅仅是在分组级别上。例如,`RANK`可以为每行分配一个唯一的排名,`LAG`...

    Oracle分析函数

    Oracle 分析函数是 Oracle 数据库中的一种强大功能,能够帮助用户快速进行数据分析和处理。在本文中,我们将对 Oracle 分析函数进行详细的介绍,并对其各个函数进行解释。 一、总体介绍 Oracle 分析函数的语法...

    oracle分析函数,窗口函数,报表函数

    Oracle 分析函数、窗口函数和报表函数是数据库查询和数据分析中的关键工具,尤其在复杂的OLAP(在线分析处理)系统中发挥着重要作用。在Oracle数据库中,这些功能提供了对大量数据进行高效处理的能力,帮助用户生成...

    ORACLE分析函数教程

    3. **使用`LAG()`和`LEAD()`函数** ```sql SELECT employee_id, salary, LAG(salary) OVER (ORDER BY salary) AS previous_salary, LEAD(salary) OVER (ORDER BY salary) AS next_salary FROM employees; ```...

    oracle函数介绍(6) 著名函数之分析函数.doc

    LEAD函数与LAG相反,它返回当前行之后n行的列值。 以上这些分析函数极大地增强了Oracle SQL的功能,允许用户在单个查询中处理复杂的分析任务,无需多次查询或临时表。通过巧妙地组合这些函数,我们可以实现诸如...

    oracle常用函数chm版

    6. **分析函数**:分析函数在处理大量数据时非常有用,如`RANK`、`DENSE_RANK`和`ROW_NUMBER`用于生成行序号,`LEAD`和`LAG`可以访问当前行的前一行或后一行数据,`FIRST_VALUE`和`LAST_VALUE`则用于获取分组内第一...

    oracle函数大全中文api文档

    ROW_NUMBER,RANK,DENSE_RANK提供窗口排序,LEAD和LAG获取当前行的前一行或后一行数据,FIRST_VALUE和LAST_VALUE获取窗口内的第一个或最后一个值。 这个中文API文档将详细介绍这些函数的语法、参数、返回值以及...

    oracle函数大全(分类成9个word文档)

    4. "oracle函数介绍(5) 分析函数简述.doc":分析函数,如RANK()、ROW_NUMBER()和LEAD/LAG(),在处理分组数据时非常有用,可以提供行级别的排序和计算。 5. "oracle函数介绍(6) 著名函数之分析函数.doc"和"oracle...

    ORACLE分析函数大全

    - `LEAD()`, `LAG()`: 提取当前行之后或之前的值。 - `FIRST_VALUE()`, `LAST_VALUE()`: 获取窗口内的第一个或最后一个值。 4. **分位数函数**: - `NTILE()`: 将结果集分割成n个相等的部分,返回每个行所在的...

Global site tag (gtag.js) - Google Analytics