使用SQL計算名次

2021-08-30 20:04:49 字數 1122 閱讀 9471

專案中遇到乙個查詢,具體需求是:需要根據考試安排編號和乙個學生的考試資訊編號查詢該考生在本次考試安排中的名次,所以用的一下sql語句:

select count(*)+1 as 名次 from t_考試資訊表 

where c_考試安排編號= '2c92f49f2a5a8e31012a5aa0d7d00024'

and c_考試成績 > (select c_考試成績 from t_考試資訊表

where c_考試資訊編號= '2c92f49f2a651c46012a652551bd0022')

實際上這裡的sql語句只是做了乙個統計,統計了現在有多少人的分數大於需要計算的人的考試成績,這個計算出來的數字加1,就是名次了。

接下來還需要查詢該考生的其他資訊,所以需要將這條sql查詢的名次作為一列,加入到另外乙個查詢中

select *,

(select count(*)+1 as 名次 from t_考試資訊表

where c_考試安排編號= '2c92f49f2a5a8e31012a5aa0d7d00024'

and c_考試成績 > (select c_考試成績 from t_考試資訊表

where c_考試資訊編號= '2c92f49f2a651c46012a652551bd0022')

) as 名次

from el_test_info

where test_info_id = '2c92f49f2a651c46012a652551bd0022'

接下來,這條sql語句經過改良,可以查詢乙個列表,列出所有考生的資訊和名次,並且可以接受使用者輸入的查詢條件:

select * ,     

(select count(*)+1 as 名次 from t_考試資訊表 t2

where c_考試安排編號 = '2c92f49f2a5a8e31012a'

and 考試成績 > t1.考試成績

) as 名次

from t_考試資訊表 t1

where c_考試安排編號 = '2c92f49f2a5a8e31012a'

這樣就完成了最後的查詢工作

用SQL計算名次

幾天前在csdn回答別人的問題 sql怎樣取得指定人的名次 現將結果招錄下來。一 測試資料 select a.into tmp mark from select id 1,myname 小明 mypass 123 union select id 2,myname 小花 mypass 122 unio...

按照分數進行名次計算 名次排序

乙個元素在乙個序列中的名次是所有比它小的元素個數加上在它左邊出現的與它相同的元素個數 例如 陣列a 4,2,9,2,6 是乙個序列,各元素的名次為ra 2,0,4,1,3 名次計算 templatevoid rank t a,int n,int ra 比較所有元素 for int i 1 i n i...

用SQL排名次的問題

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