温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Oracle分析函数

发布时间:2020-07-16 08:51:13 来源:网络 阅读:771 作者:手不要乱摸 栏目:关系型数据库

    聚合函数可以在分析模式或非分析模式下来进行运算。非分析模式下的聚合函数将结果集削减为较少的数据行。然而,在分析模式下,聚合函数并不减少输出结果行数。并且,聚合函数能够在一行中同时取得聚合和非聚合的列。分析模式的聚合函数提供了不需要任何自连接就可以聚合不同层级数据的能力。

1. sum

Oracle分析函数

可以把sum当做聚集函数来用,也可以当做分析函数来用

Oracle分析函数

Oracle分析函数

Oracle分析函数

与前一个sql不同的是窗口的变化,这个例子中取的是开始行到当前行,即对当前行之前的行(包括当前行)求和

Oracle分析函数

从结果中很容易理解sum分析函数


2. avg

Oracle分析函数

和sum差不多,就不多说了

Oracle分析函数

Oracle分析函数

上面这两个语句是等价的,看看结果

Oracle分析函数

下面这个语句,每三行求一次平均(前,中,后)

Oracle分析函数

Oracle分析函数

3. lag

Oracle分析函数

lag提供一种方式访问当前位置的前面的行,默认offset是1,表示访问前一行

Oracle分析函数


4. lead

利用lead可以访问当前位置后面的行

Oracle分析函数

Oracle分析函数


5. first_value和last_value

first_value取窗口中的第一个值,last_value取最后一个

Oracle分析函数


6. rank

Oracle分析函数

Oracle分析函数

rank,意为排名、等级。

rank函数返回一个行的排名,值相等的行排名相同,排名是不连续的。对于top-N和bottom-N这样的操作来说,rank函数是很有用的。rank作为聚集函数时返回某一个假定值的排名,作为分析函数时返回每一行的排名。

Oracle分析函数

Oracle分析函数


7. row_number

Oracle分析函数

row_number是一个分析函数,它给每一行指定一个编号,编号从1开始。

这个函数可以实现top-N,bottom-N,inner-N这样的操作。

Oracle分析函数Oracle分析函数

注意也rownum伪列区分开,rownum对于每一行都返回一个数以表明被选中的顺序,比如1, 2……


8. listagg

Oracle分析函数

listagg函数用于列转行

作为一个单行聚集函数,listagg作用于所有行并返回单一的一行

作为一个分组聚集函数,listagg作用于每个组,并为每个组返回一行

作为一个分析函数,listagg基于查询分区字句将数据分区,并为每个分区中的每一行返回相同的结果

measure_expr,指定要操作的列或表达式

delimiter_expr,指定分隔符

order_by_clause,决定结果的顺序

Oracle分析函数

Oracle分析函数

Oracle分析函数


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI