您的位置:首页 > 数据库 > Oracle

oracle 常用分析函数

2010-05-03 10:06 302 查看
Oracle常用分析函数

ROW_NUMBER
返回有序组中一行的偏移量,从而可用于按特定标准排序的行号
row_number() over(partition by ... order by ...)

RANK
根据ORDER BY子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置。组内的数据按ORDER BY子句排序,然后给每一行赋一个号,从而形成一个序列,该序列从1开始,往后累加。每次ORDER BY表达式的值发生变化时,该序列也随之增加。有同样值的行得到同样的数字序号(认为null时相等的)。然而,如果两行的确得到同样的排序,则序数将随后跳跃。若两行序数为1,则没有序数2,序列将给组中的下一行分配值3,DENSE_RANK则没有任何跳跃
rank() over(partition by ... order by ...)

DENSE_RANK
根据ORDER BY子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置。组内的数据按ORDER BY子句排序,然后给每一行赋一个号,从而形成一个序列,该序列从1开始,往后累加。每次ORDER BY表达式的值发生变化时,该序列也随之增加。有同样值的行得到同样的数字序号(认为null时相等的)。密集的序列返回的时没有间隔的数
dense_rank() over(partition by ... order by ...)

COUNT
对一组内发生的事情进行累积计数,如果指定*或一些非空常数,count将对所有行计数,如果指定一个表达式,count返回表达式非空赋值的计数,当有相同值出现时,这些相等的值都会被纳入被计算的值;可以使用DISTINCT来记录去掉一组中完全相同的数据后出现的行数
count(...) over(partition by ... order by ...)

MAX
在一个组中的数据窗口中查找表达式的最大值
max(...) over(partition by ... order by ...)

MIN
在一个组中的数据窗口中查找表达式的最小值
min(...) over(partition by ... order by ...)

SUM
该函数计算组中表达式的累积和
sum(...) over(partition by ... order by ...)

AVG
用于计算一个组和数据窗口内表达式的平均值
avg(...) over(partition by ... order by ...)

FIRST_VALUE
返回数据组中第一个值
first_value(...) over(partition by ... order by ...)

LAST_VALUE
返回数据组中最后一个值
last_value(...) over(partition by ... order by ...)

LAG
可以访问结果集中的其它行而不用进行自连接。它允许去处理游标,就好像游标是一个数组一样。在给定组中可参考当前行之前的行,这样就可以从组中与当前行一起选择以前的行。Offset是一个正整数,其默认值为1,若索引超出窗口的范围,就返回默认值(默认返回的是组中第一行),其相反的函数是LEAD
lag(...) over(partition by ... order by ...)

LEAD
LEAD与LAG相反,LEAD可以访问组中当前行之后的行。Offset是一个正整数,其默认值为1,若索引超出窗口的范围,就返回默认值(默认返回的是组中第一行)
lead(...) over(partition by ... order by ...)

NTILE
将一个组分为"表达式"的散列表示,例如,如果表达式=4,则给组中的每一行分配一个数(从1到4),如果组中有20行,则给前5行分配1,给下5行分配2等等。如果组的基数不能由表达式值平均分开,则对这些行进行分配时,组中就没有任何percentile的行数比其它percentile的行数超过一行,最低的percentile是那些拥有额外行的percentile。例如,若表达式=4,行数=21,则percentile=1的有5行,percentile=2的有5行等等
ntile(...) over(partition by ... order by ...)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: