oracle编程入门笔记2015-01-26--分析函数使用举例

分析函数的作用,可以看做是函数和窗口共同作用,在原来查询的基础上给每行返回了一列特定的额外计算出来的行。所以可以单独把分析函数以及窗口单独拿出来分析。

下面开始

首先分析函数主要有如下几个。不是所有的oracle函数都叫分析函数。

lag(scalar_expression,<offset>,<default>):返回当前行前offset行记录中scalar_expression,如果没有返回default值。offset默认为1,default默认为null


lead(scalar_expression,<offset>,<default>):返回当前行前offset行记录中scalar_expression,如果没有返回default值


first_value(scalar_expression):返回第一行scalar_expression


last_value(scalar_expression):返回最后一行scalar_expression


是不是不是和预期的一样,返回和first_value一样的结果。

我加上一个参数,看下面这个


蓝色标出的部分是一个有默认值的参数,用来限定窗口范围,某人是从第一行到当前行。所以用firs_value 就不会有问题,使用last_value()默认从第一行到当前行,也就是当前行是最后一行。所以我们要指定窗口范围为第一行到最后一行才能正确使用last_value()。

nth_value(scalar_expression,n):返回第n行scalar_expression


第一行为空,原因和last_value没有指定窗口范围一样。

rank():给结果集排序并加上一个顺序值,相同列值得到相同的顺序值


dense_rank():与rank类似,根据关键字排序,将序号返回。但是最后的序号是连续的。


row_number():根据关键字排序,排序结果即使关键字相等,也返回不一样的排序序号。所以顺序不那么稳定,相同关键字的,可能先后顺序每次查询结果不一样


corr(expr1,expr2):计算expr1和expr2的相关系数。

相关系数 = COVAR_POP(expr1, expr2) / (STDDEV_POP(expr1) * STDDEV_POP(expr2)) 参见http://www.cnblogs.com/kerrycode/archive/2011/06/03/2063860.html


更多参见oracle官方文档:https://docs.oracle.com/cd/E18283_01/server.112/e17118/functions004.htm#i81407





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值