`

oracle+lag和lead函数(转).

阅读更多

原文:http://blog.csdn.net/pilearn/article/details/6841764

 

这两个函数,是偏移量函数,其用途是:可以查出同一字段下一个值或上一个值,并作为新列存在表中。

1。 select * from tache_columns


       TCH_ID COL_NAME_CN                                                     COL_VALUE
------------- -------------------------------------------------------------------------------- ------
            1 张三                                                                             10
            2 李四                                                                             21
            3 王五                                                                             23
            1 aaa                                                                              14
            1 bbb                                                                              20

2。select t.tch_id,
       t.col_name_cn,
       t.col_value,
       lead(t.col_value,1,null) over(partition by t.tch_id order by t.col_value) sal
from tache_columns t;

注:lead函数是先按tch_id分组,按col_val排序,并把当前行col_value的下一个值放到sal中,比如:

    colvalue=10的下一个值是14,colvalue=14 的下一个值是20。函数中的null是当没有下一个值时用null代替,当然也可以用其他值替换NULL.

3。select t.tch_id,
       t.col_name_cn,
       t.col_value,
       lag(t.col_value,1,null) over(partition by t.tch_id order by t.col_value) sal
from tache_columns t
  

lag与lead相反。函数中的1是可以修改的。具体可以运行查看
4。select t.tch_id,
       t.col_name_cn,
       t.col_value,
       lag(t.col_value) over(order by t.col_value) sal
from tache_columns t


当然也可以不要partition,lag的默认参数是1

分享到:
评论

相关推荐

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

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

    oracle函数大全.rar

    7. **分组和窗口函数**:如RANK、DENSE_RANK、LAG、LEAD,用于数据分析,特别是在复杂的排序和分组场景下。 8. **其他特殊函数**:如DBMS_OUTPUT.PUT_LINE、USER、SYSDUMMY1,分别用于输出信息、获取当前用户信息或...

    oracle函数分类.rar

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

    oracle connect by 和 分析函数总结.doc

    - 窗口函数包括`LEAD()`, `LAG()`, `SUM() OVER()`, `AVG() OVER()`, 等等,它们允许在特定的行窗口内进行计算。 5. **报表函数** - 报表函数如`CUME_DIST()`和`PERCENT_RANK()`,提供累积分布和百分位排名信息...

    oracle离线函数大全.rar

    例如,`RANK()` 和 `DENSE_RANK()` 可用于为数据集中的每一行分配一个排名,`LAG()` 和 `LEAD()` 则可以访问当前行的前一行或后一行值,`AVG() OVER()` 可以计算分区内的平均值。 2. **聚合函数**:这些函数用于对...

    ORACLE函数大全.zip

    "ORACLE函数大全.zip"这个压缩包文件很可能包含了对Oracle数据库系统中各种函数的详细说明,包括其属性、用法和功能。下面,我们将深入探讨一些常见的Oracle函数。 1. **转换函数**: - `TO_CHAR`:将数值或日期...

    oracle函数大全(分类显示).zip

    "Oracle函数大全(分类显示)"这个资源显然是为了帮助开发者更好地理解和使用Oracle中的各种函数。下面,我们将详细介绍Oracle数据库中的一些主要函数类别及其应用场景。 1. **数值函数**: - `ROUND`:对数字进行四...

    Oracle函数大全-详细介绍.rar

    比如,`RANK()`和`DENSE_RANK()`为每个组内的行分配唯一的排名,`LEAD()`和`LAG()`可以访问当前行的前后行数据,`ROW_NUMBER()`为每行分配唯一的数字。"oracle函数介绍(6) 著名函数之分析函数.doc","oracle函数介绍...

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

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

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

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

    三思笔记之Oracle函数.rar

    10. **窗口函数**:ROW_NUMBER(), RANK(), DENSE_RANK(), LAG(), LEAD()等在分组查询和数据分析中提供了更高级的计算能力。 通过"三思笔记之Oracle函数",读者可以全面了解并掌握Oracle数据库中的各种函数,提升在...

    oracle函数.chm

    6. **其他高级函数**:包括聚合函数(如`COUNT()`, `SUM()`, `AVG()`, `MAX()`, `MIN()`)、分析函数(如`RANK()`, `LEAD()`, `LAG()`)以及自定义的用户定义函数(UDF)。 在"oracle函数.chm"中,你可能会找到每个...

    oracle的分析函数汇总

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

    oracle 110个常用函数.zip

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

    Oracle函数大全.pdf

    - **取上下行数据分析函数lag()和lead()**: 返回当前行的前一行或后一行的值。 ### 第七章 其它函数 此外,Oracle还提供了许多其他类型的函数,例如与环境信息和条件判断相关的函数。 - **dump**: 返回有关列的...

    oracle 9i 分析函数参考手册.rar

    4. LAG()和LEAD():这些函数可以访问当前行之前或之后的行的值,这对于分析趋势和比较相邻行的数据非常有用。 5. FIRST_VALUE()和LAST_VALUE():返回指定列在当前行所在窗口的第一行或最后一行的值。 6. AVG()、SUM...

    %%%oracle函数全.zip

    11. **窗口函数**:ROW_NUMBER()、RANK()、DENSE_RANK()用于排序和分组,LEAD()和LAG()获取相邻行的值,FIRST_VALUE()和LAST_VALUE()获取分组的第一行和最后一行的值。 这些函数在实际数据库操作中发挥着至关重要的...

    Oracle分析函数.doc

    8. **LAG** 和 **LEAD**: LAG获取前一行的值,LEAD获取后一行的值,两者都用于访问数据窗口中的其他行。 **行号和分布函数**: 9. **ROW_NUMBER**: 为每个组内的行分配一个唯一的行号,按指定顺序排序。 10. **...

Global site tag (gtag.js) - Google Analytics