1.函数功能

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

2.lag和lead语法:

ag(exp_str,offset,defval) over()
exp_str 是要做对比的字段
offset 是exp_str字段的偏移量 比如说 offset 为2 则 拿exp_str的第一行和第三行对比,第二行和第四行,依次类推,offset的默认值为1!
defval是当该函数无值可用的情况下返回的值。Lead函数的用法类似。

3.示例:

面以求同比、环比为例,给出lag的用法,lead类似:

数据准备:

create table tmp_lxq_1
(
statdate date,
province varchar2(25) null,
premium number(18)
);

insert into tmp_lxq_1 select date '2012-01-01', '北京', 100 from dual;
insert into tmp_lxq_1 select date '2012-02-01', '北京', 110 from dual;
insert into tmp_lxq_1 select date '2012-03-01', '北京', 120 from dual;
insert into tmp_lxq_1 select date '2012-04-01', '北京', 130 from dual;
insert into tmp_lxq_1 select date '2012-05-01', '北京', 150 from dual;
insert into tmp_lxq_1 select date '2012-06-01', '北京', 160 from dual;
insert into tmp_lxq_1 select date '2012-07-01', '北京', 170 from dual;
insert into tmp_lxq_1 select date '2012-08-01', '北京', 180 from dual;
insert into tmp_lxq_1 select date '2012-09-01', '北京', 190 from dual;
insert into tmp_lxq_1 select date '2012-10-01', '北京', 1100 from dual;
insert into tmp_lxq_1 select date '2012-11-01', '北京', 1110 from dual;
insert into tmp_lxq_1 select date '2012-12-01', '北京', 1120 from dual;
insert into tmp_lxq_1 select date '2013-01-01', '北京', 1130 from dual;
commit;

求环比数据:

select t.statdate,
       t.province,
       t.premium as 当期数,
       lag(premium, 1, null) over(order by statdate asc) as 前期数,
       round((t.premium - (lag(premium, 1, null) over(order by statdate asc))) /
       lag(premium, 1, null) over(order by statdate asc),2) as 环比增长
  from tmp_lxq_1 t;

结果:

求同比增长:

select t.statdate,
       t.province,
       t.premium as 当期数,
       lag(premium, 12, null) over(order by statdate asc) as 前期数,
       (t.premium - (lag(premium, 12, null) over(order by statdate asc))) /
       lag(premium, 12, null) over(order by statdate asc) as 同比增长
  from tmp_lxq_1 t;

结果:

总结:

使用lag和lead相对来说比表连接效率高很多,近期做的项目中很多都求同比环比,使用起来非常方便。

Oracle函数lag和lead详解相关推荐

  1. oracle lead_lag wm_concat,oracle函数 lag()和lead()

    [语法] lag(EXPR,,) LEAD(EXPR,,) [功能]表示根据COL1分组,在分组内部根据 COL2排序,而这个值就表示每组内部排序后的顺序编号(组内连续的唯一的) lead () 下一 ...

  2. mysql开窗函数over_oracle分析函数技术详解(配上开窗函数over())

    一.Oracle分析函数入门 分析函数是什么? 分析函数是Oracle专门用于 解决复杂报表统计需求 的功能强大的函数, 它可以在数据中进行分组然后计算基于组的某种统计 ,并且每一组的每一行都可以返回 ...

  3. 窗口函数_LAG()与LEAD() 详解

    转载自:Hive 窗口函数lead 和 lag(39) 补充:HIVE_HIVE函数_窗口函数_LAG()/LEAD() 详解 lead 和 lag 前面我们学习的first_value和last_v ...

  4. php。defined,PHP defined()函数的使用图文详解

    PHP defined()函数的使用图文详解 PHP defined() 函数 例子 定义和用法 defined() 函数检查某常量是否存在. 若常量存在,则返回 true,否则返回 false. 语 ...

  5. oracle数据库中索值,Oracle数据库中的索引详解

    Oracle数据库中的索引详解以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一 ROWID的概念 存储了row在数据文 ...

  6. oracle out参数查询,Oracle的out参数实例详解

    Oracle的out参数实例详解 一 概念 1.一般来讲,存储过程和存储函数的区别在于存储函数可以有一个返回值:而存储过程没有返回值. 2.过程和函数都可以通过out指定一个或多个输出行.我们可以利用 ...

  7. oracle的userenv和nls_lang详解

    oracle的userenv和nls_lang详解 1.userenv最常见的使用 userenv函数返回当前会话(session)的相关信息.以下sql语句可以查询当前会话连接的数据库字符集 sel ...

  8. oracle select执行顺序,oracle select执行顺序的详解

    oracle select执行顺序的详解 SQL Select语句完整的执行顺序:1.from子句组装来自不同数据源的数据: 2.where子句基于指定的条件对记录行进行筛选: 3.group by子 ...

  9. 删除oracle数据库的三种方法,oracle数据库的删除方法详解

    oracle数据库的删除方法详解 1.图形界面删除 练习之前记得创建快照 执行命令之前要保证数据库属于open状态 SQL> alter database open; [oracle@local ...

最新文章

  1. 深入理解 Embedding层的本质
  2. 面试高频题:单链表的逆置操作/链表逆序
  3. python画并列柱状图-Python实现绘制双柱状图并显示数值功能示例
  4. HDOJ 1224 Free DIY Tour
  5. SQL Server 2005中更改sa的用户名和密码
  6. RabbitMQ—AMQP协议重要概念介绍
  7. 【LeetCode笔记】128. 最长连续序列(Java、哈希表、动态规划)
  8. 网站重新解析换服务器,更换解析服务器地址
  9. 如何运行PowerShell的脚本文件
  10. Ubuntu Linux下安装软件方法
  11. 用c语言编写清理c盘程序,C盘清理小程序制作
  12. stata15中文乱码_Stata转excel中文乱码解决方法
  13. python中pygame学习——碰碰球(简单版)
  14. Android 如何获取运行内存和总运行内存等
  15. 修改php fpm监听端口,怎样修正php fpm监听端口_后端开发
  16. 【6GHz矩形贴片天线设计与分析】
  17. 快速查看电脑内存型号方法
  18. 电机qudong电路
  19. Java模拟储蓄卡和信用卡
  20. dataframe python,使用pandas dataframe python创建实时更新图

热门文章

  1. 物联网发展的三大编程语言 1
  2. 微信H5支付实战踩坑
  3. 从“玩具”到“工具”,低代码能否完全替换纯代码?
  4. 首尔半导体为美国高端照明品牌供应SunLike产品
  5. matlab a123,空白A123作品集(分类目录番外文案已补齐)
  6. android 禁止切换应用程序,Android:“返回”按钮绕过onKeyDown并关闭应用程序
  7. 四六级1990年-2021年12月历年真题PDF电子版、含详细解析及听力。网站直接下载,持续更新
  8. 红黑树(Red-Black Tree) 简介
  9. News Explorer for Mac(RSS新闻阅读器)
  10. 【Postman】下载与安装(新手图文教程)