sql查询
oracle高级函数
create table yuangong ( id number,
name varchar2(50),
zhiwei varchar2(50),
age number,
sex varchar2(20)
) tablespace test
insert into yuangong values(1,'周磊01','操作工',21,'男');
insert into yuangong values(2,'周磊02','操作工',21,'女');
insert into yuangong values(3,'周磊03','操作工',22,'男');
insert into yuangong values(4,'周磊04','操作工',24,'女');
insert into yuangong values(5,'周磊05','操作工',26,'男');
insert into yuangong values(6,'周磊06','操作工',24,'女');
insert into yuangong values(7,'周磊07','操作工',29,'男');
insert into yuangong values(8,'周磊08','操作工',22,'女');
insert into yuangong values(9,'周磊09','操作工',27,'男');
insert into yuangong values(10,'周磊10','操作工',25,'女');
insert into yuangong values(11,'周11磊','头目',34,'男');
insert into yuangong values(12,'周12磊','头目',31,'女');
insert into yuangong values(13,'周13磊','头目',31,'男');
insert into yuangong values(14,'周14磊','头目',34,'女');
insert into yuangong values(15,'周15磊','经理',45,'男');
select * from yuangong;
drop table yuangong;
1、rank()函数用于返回当前记录在窗口函数所指定的记录集中的排名
select name,rank() over( order by age ) position from yuangong;
rank()函数用于返回当前记录在窗口中的排序序号,对于排名相同的记录,函数返回排序相同的排序序号;
当出现多个排名相同的记录时,下一排名序号,将根据前一排名各个数进行跳跃。
2、相对于rank()函数,dense_rank()函数所获得的排名,则不会出现跳跃。
select name,dense_rank() over( order by age ) position from yuangong;
注意:rank()函数和dense_rank()函数对于排名相同的多条记录,返回相同的排名序列号,而函数row_number()函数每条记录都会存在唯一的排名序号
select name,row_number() over( order by age ) position from yuangong;
row_number()函数每次均返回唯一的排序序列号。
------------------------------------------------------------------------------------------------------------
分区窗口
对于窗口函数,利用partition by 关键字可以指定分区窗口
select xinzi.*,dense_rank() over ( partition by zhiwei order by jine ) position from xinzi,yuangong order by yuangong.id;
oracle——数据表的数据查询——oracle高级函数
最新推荐文章于 2022-08-09 10:54:04 发布