Oracle的分析函数功能非常强大,工作这些年来经常用到。这次将平时经常使用到的分析函数整理出来,以备日后查看。
我们拿案例来学习,这样理解起来更容易一些。
1、建表
2、插入实验数据
3、查看实验数据
查询结果如下

4、sum函数按照月份,统计每个地区的总收入
查询结果如下

5、rollup函数按照月份,地区统计收入
查询结果如下

6、cube函数按照月份,地区进行收入汇总

rollup和cube区别:
(A、B)
(A)
(A、B)
(A、C)
(A)
(B、C)
(B)
(C)
该记录是由哪个字段得出来的
查询结果如下

8、rank() over开窗函数
按照月份、地区,求打工收入排序
查询结果如下

9、dense_rank() over开窗函数按照月份、地区,求打工收入排序2
查询结果如下

10、row_number() over开窗函数按照月份、地区,求打工收入排序3
查询结果如下

11、sum累计求和根据月份求出各个打工者收入总和,按照收入由少到多排序
查询结果如下

12、max,min,avg和sum函数综合运用按照月份和地区求打工收入最高值,最低值,平均值和总额
查询结果如下

13、lag和lead函数求出每个打工者上个月和下个月有没有赚钱(personincome大于零即为赚钱)
查询结果如下

说明:Lag和Lead函数可以在一次查询中取出某个字段的前N行和后N行的数据(可以是其他字段的数据,比如根据字段甲查询上一行或下两行的字段乙)
语法如下:
lag(value_expression [,offset] [,default]) over ([query_partition_clase] order_by_clause);
lead(value_expression [,default]) over ([query_partition_clase] order_by_clause);
其中:
value_expression:可以是一个字段或一个内建函数。
offset是正整数,默认为1,指往前或往后几点记录.因组内第一个条记录没有之前的行,最后一行没有之后的行,default就是用于处理这样的信息,默认为空。
再讲讲所谓的开窗函数,依本人遇见,开窗函数就是 over([query_partition_clase] order_by_clause)。比如说,我采用sum求和,rank排序等等,但是我根据什么来呢?over提供一个窗口,可以根据什么什么分组,就用partition by,然后在组内根据什么什么进行内部排序,就用 order by。
以上所述是小编给大家介绍的常用Oracle分析函数大全,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程之家网站的支持! (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|