第一種: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 複雜度很高。下面舉乙個例...