千家信息网

Oracle中怎么实现并列排名显示

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章给大家介绍Oracle中怎么实现并列排名显示,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。第一种:dense_rank() over (order by 字段 升序
千家信息网最后更新 2025年12月03日Oracle中怎么实现并列排名显示

这篇文章给大家介绍Oracle中怎么实现并列排名显示,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

第一种:dense_rank() over (order  by  字段  升序或降序)  as  别名  from 表名;使用别名方便之后过滤条件使用;排名的时候并列算同一个人,如,1,2,2,3SQL> select ename,job,sal,dense_rank() over(order by sal desc) as rank from emp; ENAME      JOB              SAL       RANK---------- --------- ---------- ----------KING       PRESIDENT       5000          1FORD       ANALYST         3000          2SCOTT      ANALYST         3000          2JONES      MANAGER         2975          3BLAKE      MANAGER         2850          4CLARK      MANAGER         2450          5ALLEN      SALESMAN        1600          6TURNER     SALESMAN        1500          7ADAMS      CLERK           1400          8SMITH      CLERK           1400          8MILLER     CLERK           1300          9WARD       SALESMAN        1250         10MARTIN     SALESMAN        1250         10JAMES      CLERK            950         11 已选择14行。比如限制条件为 排名第二的员工,并列的都显示出来:SQL> select * from (select ename,job,sal,dense_rank() over(order by sal desc) as rank from emp) where rank =2; ENAME      JOB              SAL       RANK---------- --------- ---------- ----------SCOTT      ANALYST         3000          2FORD       ANALYST         3000          2 第二种:rank() over (order  by  字段名  升序或者降序) as  别名  from 表名;排名的时候,并列多少个人,序号就算多少个,如:1,2,2,4SQL> select ename,job,sal,rank() over(order by sal desc) as rank from emp; ENAME      JOB              SAL       RANK---------- --------- ---------- ----------KING       PRESIDENT       5000          1FORD       ANALYST         3000          2SCOTT      ANALYST         3000          2JONES      MANAGER         2975          4BLAKE      MANAGER         2850          5CLARK      MANAGER         2450          6ALLEN      SALESMAN        1600          7TURNER     SALESMAN        1500          8ADAMS      CLERK           1400          9SMITH      CLERK           1400          9MILLER     CLERK           1300         11WARD       SALESMAN        1250         12MARTIN     SALESMAN        1250         12JAMES      CLERK            950         14 已选择14行。第三种:row_number() over (order by  字段名  升序或降序)  as  别名  from 表名;这种就是不分并列,直接按序号来排名,如:1,2,3,4SQL> select ename,job,sal,row_number() over(order by sal desc) as rank from emp; ENAME      JOB              SAL       RANK---------- --------- ---------- ----------KING       PRESIDENT       5000          1FORD       ANALYST         3000          2SCOTT      ANALYST         3000          3JONES      MANAGER         2975          4BLAKE      MANAGER         2850          5CLARK      MANAGER         2450          6ALLEN      SALESMAN        1600          7TURNER     SALESMAN        1500          8ADAMS      CLERK           1400          9SMITH      CLERK           1400         10MILLER     CLERK           1300         11WARD       SALESMAN        1250         12MARTIN     SALESMAN        1250         13JAMES      CLERK            950         14 已选择14行。

关于Oracle中怎么实现并列排名显示就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

0