增加排名列SQL語句(需排名的列值相等時排名相同)

2021-06-04 19:33:35 字數 1138 閱讀 1759

sql 查詢資料時按某列排序後增加排名列,需排名的列值相等時排名相同,即如需排名列陣列為:9,9,8,7,7,6

新增的排名列陣列需要顯示為兩種:

第一種:1,1,3,4,4,6 (這種排名方法應該是最普遍的排名方法啦) 或者

第二種:1,1,2,3,3,4 (某些特殊情況需要)

--現在假設測試資料:建立臨時表 #score 並插入資料

create

table #score(id int, points float

)--id 為學號和points為成績

insert #score select 1, 90

union

allselect 2, 85

union

allselect 3, 83

union

allselect 4, 85

union

allselect 5, 92

--測試得到上述第一種排名顯示,sql如下:

select

points,

(select

count

(1)+1 from #score where points>a.points)

as 排名

from #score a order

by 排名

--結果如下:

/* points 排名

92.0 1

90.0 2

85.0 3

85.0 3

83.0 5

*/ --符合要求。

--測試得到上述第二種排名顯示,sql如下:

select

points,

(select

count

(distinct points)

+1 from #score where points>a.points)

as 排名

from #score a

order

by 排名

--結果

/*points 排名

92.0 1

90.0 2

85.0 3

85.0 3

83.0 4

*/ --符合要求。

SQL語句 排名問題。

問題描述 一張表tb1中有5個字段,如下 ksh 字元型,xm 字元型,cj 整型,mc 整型,bz 字元 型。原始資料如下 ksh xm cj mc bz 000111 葉丹 170 000112 葉丹丹 170 000113 葉小 169 000114 葉小小 168 000115 葉大 168...

SQL語句題目rank排名

mysql,sql語句題目 實現 1.排名不跳級,按順序排序下來 select p.pid,p.name,p.age,tmp.rank1 from players p left join select a.age,rank rank 1 as rank1 from select age from p...

為 MySQL 的查詢結果新增排名字段

我正在用 mysql 客戶端的時候,突然想到如果可以給查詢結果新增排名該多好啊,然後就找到了乙個簡單的解決辦法。下面是乙個示例表的資料 然後我們要根據 roll no 字段進行排序並給出排名,我們首先必須定義乙個初始值為0的變數,然後在查詢結果中使用這個變數。如下面的 view source pri...