SQL語句 排名問題。

2021-05-24 14:02:34 字數 1545 閱讀 7729

問題描述:一張表tb1中有5個字段,如下:ksh 字元型,xm 字元型,cj 整型,mc 整型,bz 字元 型。

原始資料如下:

ksh xm cj mc bz

000111 葉丹 170

000112 葉丹丹 170  

000113 葉小 169 

000114 葉小小 168

000115 葉大 168

000116 葉大大 168

000117 葉大小 167

實現結果為:1、在字段「mc」 中排名(有並列)2、在字段「bz」中加入「有幾個並列」

結果如下:

ksh xm cj mc bz

000111 葉丹 170 1 2

000112 葉丹丹 170 1 2  

000113 葉小 169 3 1 

000114 葉小小 168 4 3

000115 葉大 168 4 3

000116 葉大大 168 4 3

000117 葉大小 167 7 1

我們現在先實現排名問題,(注意:有並列的情況)

簡單的語句如下:

結果如下:

000111 葉丹 170 null null 1

000112 葉丹丹 170 null null 1

000113 葉小 169 null null 3

000114 葉小小 168 null null 4

000115 葉大 168 null null 4

000116 葉大大 168 null null 4

000117 葉大小 167 null null 7

--注意:此方法為排名的sql語句,可以通用。

但我不知道為什麼????

下面是來討論一下備註有幾個並列的問題。

**如下:

select cj,count(1) as bz from tb group by cj

這條語句好理解。

加上條件。

select

b.*,a.bz

from

(select cj,count(1) as bz from tb group by cj)a ,

(select ksh,xm,cj,mc=(select count(cj) from tb where cj>t.cj)+1 from tb t)b

where

a.cj=b.cj

附例:select b.*,a.bz from

(select yxskcsf,count(1) as bz from cjk where sf='湖南' and zydm='0504' group by yxskcsf)a,

(select ksh,xm,yxskcsf,mc=(select count(yxskcsf) from cjk where sf='湖南' and zydm='0504' and yxskcsf>t.yxskcsf)+1 from cjk t where sf='湖南' and zydm='0504')b where a.yxskcsf=b.yxskcsf order by b.mc

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...

用SQL排名次的問題

用sql排名次的問題 delphi windows sdk api 在製作乙個貨物銷量排名報表時,我用一名sql語句聯合查詢出了貨物id及對應的銷售總量 sql.text select 貨物id,sum 銷量 as 銷量 from 銷售表 group by 貨物id order by sum 銷量 ...

Sql排名和分組排名

在很多時候,都有排名這個功能,比如排行榜,並且還需要分頁的功能,一般可以再select的時候按照某一字段 oorder by xx desc,這樣limit 查詢就可以得到排名資訊,但是有時候是需要多表連線,或者是有乙個隨機檢視,在頁面上並不是按照排名公升降序。這個時候就需要用sql來實現排名。先準...