oracle高级函数

参考: https://www.cnblogs.com/GotoJava/p/7249701.html

          

1. 分析函数

参考:分析函数和开窗函数over

分析函数是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);
View Code

猜你喜欢

转载自www.cnblogs.com/shiyun32/p/10194776.html