参考: https://www.cnblogs.com/GotoJava/p/7249701.html
1. 分析函数
分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组
然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计值。
分析函数与聚合函数对比:
普通的聚合函数用group by分组,每个分组返回一个统计值,而分析函数采用partition by分组,
并且每组每行都可以返回一个统计值(多个)。
over (partition by xx order by xx )
over:关键字,用于标识分析函数
分组(partition by):分区子句,根据分区表达式的条件逻辑将单个结果集分成N组
排序(order by):排序子句,用于对分区中的数据进行排序
窗口(rows):开窗函数指定了函数所能影响的窗口范围,也就是说在这个窗口范围中都可以受到函数的影响,有些分析函数就是开窗函数
使用实例:
建表sql: 按f5执行完以后记得commit
--创建表格 create table comm.student1( name varchar2(20), city varchar2(20), age number, salary number ); --插入数据 INSERT INTO comm.student1(name,city,age,salary) VALUES('Kebi','JiangSu',20,3000); INSERT INTO comm.student1(name,city,age,salary) VALUES('James','ChengDu',21,4000); INSERT INTO comm.student1(name,city,age,salary) VALUES('Denglun','BeiJing',22,3500); INSERT INTO comm.student1(name,city,age,salary) VALUES('Yangmi','London',21,2500); INSERT INTO comm.student1(name,city,age,salary) VALUES('Nana','NewYork',22,1000); INSERT INTO comm.student1(name,city,age,salary) VALUES('Sunli','BeiJing',20,3000); INSERT INTO comm.student1(name,city,age,salary) VALUES('Dengchao','London',22,1500); INSERT INTO comm.student1(name,city,age,salary) VALUES('Huge','JiangSu',20,2800); INSERT INTO comm.student1(name,city,age,salary) VALUES('Pengyuyan','BeiJing',24,4500); INSERT INTO comm.student1(name,city,age,salary) VALUES('Baoluo','London',25,8500); INSERT INTO comm.student1(name,city,age,salary) VALUES('Huting','ChengDu',25,3000); INSERT INTO comm.student1(name,city,age,salary) VALUES('Hurenxiang','JiangSu',23,2500);