ORACLE分析函数应用(一)记录排名-创新互联
初学PL/SQL。
为湘潭等地区用户提供了全套网页设计制作服务,及湘潭网站建设行业解决方案。主营业务为成都网站制作、网站建设、湘潭网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!在oracle中,使用RANK,DENSE_RANK和ROW_NUMBER这3个分析函数都可以进行对记录的编号,在处理记录排名方面可以考虑使用以上三种方法之一。
RANK:通过对order by 后的条件,对每一行进行编号,当比较字段相等时,两行拥有相同的编号,接下来的下一条记录进行跳号。
DENSE_RANK:排序方式同RANK,比较字段相等的记录同样拥有相同编号,接下来的下一条记录不跳号,拥有连续的编号。
ROW_NUMBER:排序方式同RANK,即使存在重复条件的记录,编号也是始终递增,拥有连续的编号。
建立emp员工表
create table emp ( empno number primary key, ename varchar2(20) not null, deptno varchar2(20) not null, sal number , hiredate date not null );现在,需要对 emp表中不同部门的员工进行薪水的排名。
select e.*,RANK() over (partition by deptno order by sal desc nulls last) rank排名, DENSE_RANK() over (partition by deptno order by sal desc nulls last) dense排名, ROW_NUMBER() over (partition by deptno order by sal desc nulls last) row排名 from emp e order by deptno;获得结果如下:
比较第五条记录的rank排名和dense排名就会得到跳号与不跳号的区别,而ROW_NUMBER不论比较条件的值是否是相同的,总是会顺序递增的进行编号。这三种不同函数适用于不同的业务场景。
另:null在窗体中会排在其他值的前面,使用 NULLS LAST 语句,使得null值排在最后。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享文章:ORACLE分析函数应用(一)记录排名-创新互联
URL标题:http://scyanting.com/article/copche.html