Oracle 分析函数

分析函数语法格式:(<> 内的内容可以选择性省略)

FUNCTION_NAME(<参数>,) OVER (<PARTITION BY 表达式,> <ORDER BY 表达式 <ASC DESC> )

函数为聚合函数(AVG,SUM,COUNT)

  1. FUNCTION_NAME(<参数>,…) OVER (PARTITION BY 表达式,… ) – 分组求值
  2. FUNCTION_NAME(<参数>,…) OVER (ORDER BY 表达式 ) – 整体数据未做分组,先排序,在求累计求值
  3. FUNCTION_NAME(<参数>,…) OVER (PARTITION BY 表达式,… ORDER BY 表达式 ) – 先分组,按组内排序,对组内求累计求值

函数为排序函数(ROW_NUMBER(),RANK(),DENSE_RANK()):

  1. ROW_NUMBER:
    ROW_NUMBER函数返回一个唯一的值,当碰到相同数据时,排名按照记录集中记录的顺序依次递增。
  2. RANK:
    RANK函数返回一个唯一的值,当碰到相同的数据时,此时所有相同数据的排名是一样的,
    同时会在最后一条相同记录和下一条不同记录的排名之间空出排名。
  3. DENSE_RANK
    DENSE_RANK函数返回一个唯一的值,当碰到相同数据时,此时所有相同数据的排名都是一样的。
    同时会在最后一条相同记录和下一条不同记录的排名之间不空出排名。

FUNCTION_NAME() OVER (ORDER BY 表达式 ) – 整体数据未做分组,按ORDER BY 的字段排名
FUNCTION_NAME() OVER (PARTITION BY 表达式,… ORDER BY 表达式 ) – 先分组,按组内排序,对组内进行排名

函数为位移函数(LEAD(列,参数), LAG(列,参数))

SELECT E.*,
		   LAG(E.SAL,1) OVER(ORDER BY E.SAL) AS 工资下移一位,
		   LEAD(E.SAL,1) OVER(ORDER BY E.SAL) AS 工资上移一位
	  FROM EMP E;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值