Oracle並列排名顯示

2021-09-25 13:55:59 字數 2091 閱讀 9739

第一種:dense_rank() over (order by 字段 公升序或降序) as 別名 from 表名;

使用別名方便之後過濾條件使用;

排名的時候並列算同乙個人,如,1,2,2,3

sql> select ename,job,sal,dense_rank() over(order by sal desc) as rank from emp;

ename job sal rank

king president 5000 1

ford analyst 3000 2

scott analyst 3000 2

jones manager 2975 3

blake manager 2850 4

clark manager 2450 5

allen salesman 1600 6

turner salesman 1500 7

adams clerk 1400 8

smith clerk 1400 8

miller clerk 1300 9

ward salesman 1250 10

martin salesman 1250 10

james 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 2

ford analyst 3000 2

第二種:rank() over (order by 欄位名 公升序或者降序) as 別名 from 表名;

排名的時候,並列多少個人,序號就算多少個,如:1,2,2,4

sql> select ename,job,sal,rank() over(order by sal desc) as rank from emp;

ename job sal rank

king president 5000 1

ford analyst 3000 2

scott analyst 3000 2

jones manager 2975 4

blake manager 2850 5

clark manager 2450 6

allen salesman 1600 7

turner salesman 1500 8

adams clerk 1400 9

smith clerk 1400 9

miller clerk 1300 11

ward salesman 1250 12

martin salesman 1250 12

james clerk 950 14

已選擇14行。

第三種:row_number() over (order by 欄位名 公升序或降序) as 別名 from 表名;

這種就是不分並列,直接按序號來排名,如:1,2,3,4

sql> select ename,job,sal,row_number() over(order by sal desc) as rank from emp;

ename job sal rank

king president 5000 1

ford analyst 3000 2

scott analyst 3000 3

jones manager 2975 4

blake manager 2850 5

clark manager 2450 6

allen salesman 1600 7

turner salesman 1500 8

adams clerk 1400 9

smith clerk 1400 10

miller clerk 1300 11

ward salesman 1250 12

martin salesman 1250 13

james clerk 950 14

允許並列的排名

時間限制 1 sec 記憶體限制 16 mb 在我們參加的各種競賽中,允許並列的排名方式是經常遇到的。例如有四名選手的成績分別為50 80 50 30分,則80分的選手為第一名,50分的兩名選手均為第二名,30分的選手為第四名。請編寫乙個程式,計算乙個選手在這種排名方式之下的名次 分數高的選手排前面...

MySQL並列排名和順序排名查詢

建立一張叫scores的表,內容如下。因為測試排名,所以就用最簡單的結構。id score199 280387 460580 699獲取分數排名,要求並列排名。如果兩個分數相同,則兩個分數排名 rank 相同。名次之間不應該有 間隔 id score rank199 16991 38722 8035...

氣泡排序 Problem 並列排名

氣泡排序原理就是 如果有n個數,相鄰的兩個數進行比較,就是1號和2號,2號和3號 n 1號和n號比較,每次比較確定乙個數的位置。也就是第乙個輪迴比較n 1次,第二個就比較n 2次,直到只需要比較兩個數為止。核心部分就是雙重巢狀迴圈,但是從這可以看出它的時間複雜度是o n 2 複雜度很高。下面舉乙個例...