`
hypgr
  • 浏览: 277832 次
社区版块
存档分类
最新评论

Oracle 使用LAG和LEAD函数统计

阅读更多

LagLead函数可以在一次查询中取出同一字段的前N行的数据和后N行的值。这种操作可以使用对相同表的表连接来实现,不过使用LAGLEAD有更高的效率。以下是LAGLEAD的例子:

SQL> select year,region,profit ,lag (profit,1) over (order by year)

 

2       as last_year_exp from test;

 

YEAR REGION      PROFIT LAST_YEAR_EXP

---- ------- ---------- -------------

2003 West            88

2003 West            88            88

2003 Central        101            88

2003 Central        100           101

2003 East           102           100

2004 West            77           102

2004 East           103            77

2004 West            89           103

 

SQL> select year,region,profit ,lead (profit,1) over (order by year)

 

2       as next_year_exp from test;

 

YEAR REGION      PROFIT NEXT_YEAR_EXP

---- ------- ---------- -------------

2003 West            88            88

2003 West            88           101

2003 Central        101           100

2003 Central        100           102

2003 East           102            77

2004 West            77           103

2004 East           103            89

2004 West            89

Lag函数为Lag(exp,N,defval),defval是当该函数无值可用的情况下返回的值。Lead函数的用法类似。

Lead和Lag函数也可以使用分组,以下是使用region分组的例子:

SQL> select year,region,profit ,

2 lag (profit,1,0) over (PARTITION BY region order by year)

 

3       as last_year_exp from test;

 

YEAR REGION      PROFIT LAST_YEAR_EXP

---- ------- ---------- -------------

2003 Central        101             0

2003 Central        100           101

2003 East           102             0

2004 East           103           102

2003 West            88             0

2003 West            88            88

2004 West            77            88

2004 West            89            77

分享到:
评论
2 楼 guji528 2013-04-12  
oracle的统计函数真的很强大
1 楼 liushilang 2009-10-26  
突然间好像又明白了这个函数的一些作用,像链表指针

相关推荐

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

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

    oracle函数分类.rar

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

    oracle常用函数chm版

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

    Oracle开发的over函数

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

    oracle函数大全中文api文档

    "Oracle函数大全中文API文档"是一个非常实用的资源,它提供了对Oracle数据库所有内置函数的详尽解释,帮助开发者和DBA快速理解和使用这些函数。 1. **日期与时间函数**: Oracle提供了处理日期和时间的大量函数,...

    oracle错误好帮助文档和oracle函数大全

    - **分析函数**:如RANK、LEAD、LAG、FIRST_VALUE、LAST_VALUE用于窗口操作,提供更复杂的数据分析能力。 掌握Oracle错误帮助文档和函数大全,不仅能够提升日常数据库管理的效率,还能在面对复杂问题时提供强大的...

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

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

    oracle 110个常用函数.zip

    以上只是一部分Oracle常用函数的概述,实际资料中可能包含更详细的解释、示例和使用场景。掌握这些函数将极大地提高你在Oracle数据库中的查询效率和数据处理能力。在学习过程中,理解每个函数的作用、参数及返回值...

    oracle 10G函数大全(中文)

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

    ORACLE分析函数大全

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

    oracle分析函数及开窗函数

    2. **偏移量函数**:如`LAG()`, `LEAD()`等,用于访问当前行之前的或之后的行的数据。 3. **聚合函数**:如`SUM()`, `AVG()`, `MIN()`, `MAX()`等,这些函数可以对一组值执行聚合操作,并将结果应用于每个组中的每一...

    Oracle_详解分析函数

    - **窗口函数进阶-比较相邻记录**:使用`LAG`或`LEAD`函数比较当前行与其前后行的值。 **例:** ```sql SELECT empno, ename, sal, LAG(sal) OVER (ORDER BY empno) AS prev_sal FROM employees; ``` #### ...

    Oracle分析函数

    Oracle分析函数为数据处理提供了强大的工具箱,使得开发者能够轻松地执行复杂的统计分析和数据处理任务。通过熟练掌握这些函数,可以在数据分析、报告生成等方面大大提高效率。无论是简单的聚合操作还是复杂的分布...

    深入浅出Oracle分析函数

    分析函数主要分为几大类:等级函数(Ranking Functions)、窗口函数(Windowing Functions)、报表函数(Reporting Functions)以及LAG和LEAD函数。 #### 二、等级函数(Ranking Functions) 等级函数主要包括`...

    Oracle分析函数教程

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

    Oracle分析函数.doc

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

    oracle函数

    13. **窗口函数**:如LEAD(), LAG(), RANK()等在数据集上提供基于行的计算,常用于数据分析。 14. **转换函数**:DECODE()和NVL2()提供条件判断和值的替换。 15. **日期计算函数**:NEXT_DAY()找出给定日期后的下...

    oracle 分析函数学习笔记

    Oracle的分析函数还包括`ROW_NUMBER`, `RANK`, `DENSE_RANK`用于行号分配,`LEAD`, `LAG`用于获取前后行数据,`FIRST_VALUE`, `LAST_VALUE`获取窗口范围内的第一个或最后一个值,以及`NTILE`进行分桶等。这些函数在...

    ORACLE 分析函数大全

    分析函数在Oracle 8.1.6版本中被引入,自那时起,它们已经成为数据库查询和报表生成的重要组成部分。 在理解分析函数时,关键的概念是“数据窗口”或“窗口函数”。数据窗口定义了分析函数作用的行集,这个行集可以...

    Oracle分析函数.pdf

    4. LAG, LEAD函数:允许在结果集中向前或向后检索数据值,常用于在没有自连接的情况下进行行间的数据比较。 5. 方差和标准差函数:如`VAR_POP()`, `VAR_SAMP()`, `STDEV_POP()`,它们用于计算未排序分区的统计值。 ...

Global site tag (gtag.js) - Google Analytics