oracle first_value,last_valus

first_value和last_value 是用来去分析函数窗口中对应列的第一个值和最后一个值的函数。

语法如下:

first_value(col [ignore NULLS]) over([PARTITION BY col] [ORDER BY sal] [windows])
last_value(col [ignore NULLS]) over([PARTITION BY col] [ORDER BY sal] [windows])
--col          : 表示选取的列
--ignore NULLS :表示忽略空值
--PARTITION BY :表示分组
--ORDER BY     :表示排序
--windows      :表示窗口,默认值是(RANGE UNBOUNDED PRECEDING AND CURRENT ROW)从第一行到当前行
--windows      :常用值(ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)从第一行到最后一行               

示例1:

SELECT first_value(comm ) over() firstval,
       last_value(comm ) over() lastval,
       e.*
  FROM emp e

结果:

示例2:

SELECT first_value(comm ) over(partition by deptno) firstval,
       last_value(comm ) over(partition by deptno) lastval,
       e.*
  FROM emp e

结果:

示例3:

SELECT first_value(comm ) over(partition by deptno order by sal) firstval,
       last_value(comm ) over(partition by deptno order by sal) lastval,
       e.*
  FROM emp e

结果:

示例4:

SELECT first_value(comm ignore nulls) over(partition by deptno order by sal) firstval,
       last_value(comm ignore nulls) over(partition by deptno order by sal) lastval,
       e.*
  FROM emp e

结果:

示例5:

SELECT first_value(sal ignore nulls) over(partition by deptno order by sal) firstval,
       last_value(sal ignore nulls) over(partition by deptno order by sal) lastval,
       e.*
  FROM emp e;

SELECT first_value(sal ignore nulls) over(partition by deptno order by sal) firstval,
       last_value(sal ignore nulls) over(partition by deptno order by sal ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) lastval,
       e.*
  FROM emp e

结果:

第一个sql结果:

第二个sql结果:

转载于:https://www.cnblogs.com/wolil/p/5550410.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值