ORACLE 分析函数应用(一) 记录排名
admin
2023-05-07 00:00:03
0

         初学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;

    
获得结果如下:

ORACLE 分析函数应用(一) 记录排名


比较第五条记录的rank排名和dense排名就会得到跳号与不跳号的区别,而ROW_NUMBER不论比较条件的值是否是相同的,总是会顺序递增的进行编号。这三种不同函数适用于不同的业务场景。


另:null在窗体中会排在其他值的前面,使用 NULLS LAST 语句,使得null值排在最后。


相关内容

热门资讯

江苏睿恩新能源申请正极极片及其... 国家知识产权局信息显示,江苏睿恩新能源科技有限公司申请一项名为“一种正极极片及其制备方法、锂离子电池...
流言|2026年地球会失重7秒... 流言:2026年8月12日地球将失重7秒、数千万人因此伤亡。 (图片由AI生成) 真相:“地球重...
从渠道赋能到行业基础设施 互联... 2025年,伴随数智技术的加速渗透,保险业的获客方式、决策逻辑乃至服务形态,都在被重新定义,互联网保...
人形机器人绕不开的坎:续航问题... 这两年,关于人形机器人的故事已经被讲了很多:AGI 的终极载体、万亿美元的劳动力替代、工厂和家庭的全...
合成生命重要突破 中国团队首次... 中新网北京5月13日电 (记者 孙自法)构建能够模拟天然细胞分裂行为的人工细胞,是合成生命研究至关重...
“九章四号”问世 中国科学家再... 4月10日拍摄的“九章四号”量子计算原型机局部。新华社记者 周牧 摄 新华社合肥5月13日电(记者陈...
索尼正面回应30%平台税:要养... 快科技5月13日消息,针对长期诟病的PlayStation商店30%抽成,索尼官方近日首度正面回应称...
具身跃迁 生态共建 中国移动首... 5月13日,中国移动首届具身智能合作伙伴大会在杭州举行。大会以“数智具身 移路领航”为主题,以搭建政...
“爱泼斯坦被软禁时,性侵了我” 据英国广播公司BBC报道,一名曾遭受杰弗里·爱泼斯坦性侵的幸存者讲述了这位已故性侵犯者,在因引诱未成...
凤凰女记者战地日记丨一边装行李... 今天早上起来一睁眼,就看看伊朗的局势。美伊昨晚在波斯湾又发生了零星冲突,凌晨12点伊朗说靠近格什姆岛...