`
vicento4
  • 浏览: 21956 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

oracle lead/lag over

阅读更多
主要是lag和lead函数的用法,举两个例子来说明
这两个函数是偏移量函数,可以查出一个字段的上一个值或者下一个值,配合over来使用。
如全表查询select * from tmp_cmu t 结果如下
ITEM_NO          PERIOD              CMU
---------------- ------------ ----------
A01              201001             1000
A01              201002             1200
A01              201003             1190
A01              201004             1600
A01              201005             1980
A01              201006             1890
A01              201007             2100
A01              201008             2320
A01              201009             2540
A01              201010             2490
A01              201011             2610
现在首先用lead函数,这个函数是向上偏移,现在对cmu字段进行偏移查询,如下sql语句
select item_no,
       period,lead(cmu, 1) over(partition by item_no,
              substr(period, 1, 4) order by period) as cmup
              from tmp_cmu
查询结果为:
ITEM_NO          PERIOD             CMUP
---------------- ------------ ----------
A01              201001             1200
A01              201002             1190
A01              201003             1600
A01              201004             1980
A01              201005             1890
A01              201006             2100
A01              201007             2320
A01              201008             2540
A01              201009             2490
A01              201010             2610
A01              201011             2890
可以看出cmu字段向上偏移了一位,lead(cmu,1)这里的参数是可以修改的,1代表偏移一位。
lag函数是向下偏移一位
select item_no,
       period,lag(cmu, 1) over(partition by item_no,
                      substr(period, 1, 4) order by period) as cmup
                  from tmp_cmu
结果是:
ITEM_NO          PERIOD             CMUP
---------------- ------------ ----------
A01              201001
A01              201002             1000
A01              201003             1200
A01              201004             1190
A01              201005             1600
A01              201006             1980
A01              201007             1890
A01              201008             2100
A01              201009             2320
A01              201010             2540
A01              201011             2490
当然我这只是简单的举两个例子,还有更好的用法。等以后慢慢研究
分享到:
评论

相关推荐

    ORACLE_OVER函数

    ### ORACLE OVER 函数详解 #### 一、概述 在Oracle数据库中,OVER函数是用于实现窗口函数(Window Functions)的重要组成部分。窗口函数允许我们执行更复杂的数据分析操作,如计算累计总和、排名等。这在开发报表...

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

    Oracle中的LAG和LEAD函数是窗口函数(Window Function)的一部分,它们主要用于在数据集的行之间进行向前或向后的查找,以获取当前行之外的数据。这两个函数在数据分析、报表生成和业务智能应用中非常常见,特别是在...

    Oracle开发的over函数

    ### Oracle开发中的OVER函数详解 #### 一、Oracle分析函数简介 在Oracle数据库开发中,分析函数是一类非常强大的工具,主要用于实现复杂的查询需求,尤其是在处理大量数据时,能够提供高级的数据汇总、排序和筛选...

    oracle分析函数over_及开窗函数.txt

    本文将详细介绍Oracle中的`OVER`子句以及几种常用的开窗函数,包括`ROW_NUMBER()`, `RANK()`, `DENSE_RANK()`和`LAG()`等。 #### 二、基本概念 - **`OVER`子句**:`OVER`子句用于指定分析函数的作用范围,它可以...

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

    根据提供的文件信息,本文将详细解释如何在Oracle数据库中使用`LAG`函数来获取同一字段的前N行数据,以及如何使用`LEAD`函数获取后N行的值。 ### Oracle LAG 和 LEAD 函数简介 #### 1. LAG 函数 `LAG`函数是Oracle...

    Oracle分析函数参考手册

    除了AVG和CORR,Oracle还提供了其他分析函数,如LEAD/LAG(获取当前行的前/后一行数据)、RANK/DENSE_RANK/ROW_NUMBER(为每一行分配唯一的排名)、PERCENT_RANK/CUME_DIST(计算百分位或累积分布)、MIN/MAX(按...

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

    在本篇中,我们将深入探讨几个关键的分析函数,包括AVG、SUM、COUNT、FIRST_VALUE、LAST_VALUE、LAG和LEAD。 1. AVG([DISTINCT|ALL] expr) OVER(analytic_clause) AVG函数用于计算平均值,分为聚合函数和分析函数...

    oraclesql 学习资料

    - **窗口函数**:如 LEAD()、LAG() 等,允许在查询结果集上进行复杂计算。 - 示例:`SELECT id, salary, LAG(salary) OVER (ORDER BY id) AS prev_salary FROM employees;` - **游标**:用于处理结果集中的行,允许...

    oracle分析函数在BI分析中应用事例

    Oracle提供了26个分析函数,涵盖了各种复杂计算需求,如`lead()`, `lag()`, `percent_rank()`, `cume_dist()`等。这些函数使得在SQL中执行诸如预测、趋势分析、累计分布等操作变得简单。 5. **窗口函数的应用**: ...

    oracle查询相邻上下行值

    本篇内容主要介绍了两种不同的方法来实现Oracle数据库中查询相邻行的方法:一种是通过自连接的方式,另一种则是利用Oracle 11g引入的`LAG()`和`LEAD()`窗口函数。 ##### 方法一:自连接方式 这种方法的核心思想是...

    oracle分析函数的用法

    - LEAD/LAG:获取当前行之后或之前的行的值。 - RANK/ROW_NUMBER/DENSE_RANK:为每一行分配唯一的排名。 6. 窗口范围: - `RANGE`窗口适用于基于数值或日期的数据,例如计算特定天数内的平均薪资。 - `ROWS`...

    Oracle中的分析函数详解

    4. LAG() / LEAD():获取当前行之前或之后的值,常用于时间序列数据分析。 5. FIRST_VALUE() / LAST_VALUE():返回指定列的第一个或最后一个值,无论在哪个行位置。 6. AVG() / SUM() / MAX() / MIN():这些聚合函数...

    ORACLE分析函数教程

    4. **前导(Lag)/后置(Lead)函数**:允许在结果集中向前或向后检索值,常用于获取前一行或后一行的数据。 ```sql -- 示例:获取当前行之前一行的薪水 SELECT employee_id, salary, LAG(salary) OVER (ORDER BY ...

    oracle分组排序统计高级用法

    - `OVER`子句是Oracle提供的分析函数的一部分,用于定义一个窗口,该窗口可以被分析函数所使用。 - 分析函数包括`ROW_NUMBER()`、`RANK()`、`DENSE_RANK()`、`LEAD()`、`LAG()`等。 - `OVER`子句可以包括`...

    Oracle分析函数教程

    分析函数还有其他多种类型,如COUNT、MAX、MIN、SUM、LEAD、LAG、RANK、DENSE_RANK等,它们都允许在数据窗口内进行更复杂的计算。通过灵活运用这些函数,可以实现更精细的数据分析和报告,例如计算移动平均、差异、...

    oracle行转列

    - oracle分析函数.doc:分析函数如ROW_NUMBER(), RANK(), DENSE_RANK(), LAG(), LEAD(), SUM() OVER(), AVG() OVER()等,它们可以在分组结果集上进行计算,提供更强大的数据窗口功能。 - oracle+110个常用函数.doc...

    oracle培训笔记2

    3. LAG和LEAD函数:向前或向后查看相邻行的数据,常用于分析和预测。 4. FIRST_VALUE和LAST_VALUE函数:获取每个分组的第一行或最后一行的值。 5. OVER子句:配合这些函数使用,定义计算的范围和上下文。 在...

    oracle日积月累

    Lag()和Lead()用于获取当前行之前或之后的值;Sum()和Avg()等在分组基础上进行计算。例如,`analytic_function: RANK() OVER (PARTITION BY column ORDER BY another_column)`将根据指定列排序并为每个分区分配一个...

    Oracle计算连续天数,计算连续时间,Oracle连续天数统计

    另一种方法是利用窗口函数,如`LAG`和`LEAD`。这些函数可以查看当前行的前一行或后一行数据,非常适合检测连续性。例如: ```sql WITH consecutive_dates AS ( SELECT employee_id, attendance_date, LAG...

    oracle 常用函数下载

    - `LAG(column, offset, default) OVER (PARTITION BY ... ORDER BY ...)` 访问当前行之前指定偏移量的行。 - `LEAD(column, offset, default) OVER (PARTITION BY ... ORDER BY ...)` 反向访问当前行之后的行。 ...

Global site tag (gtag.js) - Google Analytics