學生排名儲存過程

2021-04-09 03:11:08 字數 805 閱讀 3535

create table tb(考號 varchar(10),科目代號 varchar(10),得分 int)

insert into tb select '0001' ,'01', 60

union all select '0001' ,'02', 80

union all select '0001' ,'03', 90

union all select '0001' ,'04', 100

union all select '0002' ,'01', 50

union all select '0002' ,'02', 40

union all select '0002' ,'03', 60

union all select '0002' ,'04', 90

declare @sql varchar(8000)

set @sql='select a.考號'

select @sql=@sql+',[科目'+cast(科目代號 as varchar)+']=sum(case a.科目代號 when '''

+cast(科目代號 as varchar)+''' then a.得分 else 0 end)'

from tb group by 科目代號

exec(@sql+',sum(a.得分) as 總分,identity(int,1,1) as 名次 into tmp from tb a

group by a.考號 order by sum(a.得分) desc')

select * from tmp

drop table tb,tmp 

學生成績排名

表結構t2 sid fs 1 200 2 200 3 190 4 190 5 180 sid為學號,fs為學生總分 要求結果為 sid fs paiming 1 200 1 2 200 1 3 190 2 4 190 2 5 180 3 測試資料 create table t2 sid int nu...

學生成績排名

我做學校辦公管理的專案過程中,需要學生成績排名。學生的成績排名有個特點,就是相同分數,名次相同,但後面的排名要按前面的人數順次排下去。如有兩個第三名,那麼接下來就是第五名了。下面是自己做的測試 public void pxout 排序方法 collections.sort infoids,new c...

mysql儲存函式查詢排名 MySQL排名函式

應用場景 編寫一個 sql 查詢來實現分數排名。如果兩個分數相同,則兩個分數排名 rank 相同。請注意,平分後的下一個名次應該是下一個連續的整數值。換句話說,名次之間不應該有 間隔 id score 1 3.50 2 3.65 3 4.00 4 3.85 5 4.00 6 3.65 例如,根據上述...

儲存過程系列之儲存過程sql查詢儲存過程的使用

1.查詢某個表被哪些儲存過程 以下簡稱 sp 使用到 select distinct object name id from syscomments where id in select object id from sys.objects where type p and text like ta...

儲存過程系列之儲存過程sql查詢儲存過程的使用

1.查詢某個表被哪些儲存過程 以下簡稱 sp 使用到 select distinct object name id from syscomments where id in select object id from sys.objects where type p and text like ta...