只有兩個字段用一個sql語句查詢出某個學(xué)生的姓名、成績以及在表中的排名
昨天去面試時遇到一個這樣的問題:
有一張成績表,只有兩個字段,姓名和成績。怎樣用一個sql語句查詢出某個學(xué)生的姓名,成績以及在表中的排名?
一時間我也想不出具體實現(xiàn),我就提了兩種思路:一種是通過join關(guān)聯(lián)一個查詢出他排名的sql語句;一種是通過group by來實現(xiàn)。
回答得連自己都覺得有點心虛。請問大家如何實現(xiàn)呢?
假設(shè):表名字為Course,兩個字段分別為name和score
實現(xiàn)語句:
SELECT 學(xué)生,成績, (SELECT COUNT(*) FROM 表 WHERE a.成績<=成績) AS 排名 FROM 表 AS a
方法二:
declare @Course table(name varchar(100),cj int) insert into @Course select 'a',99 union all select 'b',66 union all select 'c',88 select * from ( select (select 1+count(name) from @Course where cj>t.cj) mc,name,cj from @Course t ) tem where name='b'
如果有成績相同的記錄的時候,goodspeed的語句確實有一些瑕疵,但是我根據(jù)他的語句稍微修改了一下就很完美了。
SELECT name,score, (SELECT COUNT(*)+1 FROM course WHERE a.score<score) AS sort FROM course AS a order by sort
更多請到這里查看評論
相關(guān)文章
如何解決VisualSVN Server 安裝提示錯誤 Repositories is not a valid shor
最近在程序中安裝VisualSVN Server時,總是提示“'Repositories' is not a valid short file name”這個問題,難為了好長時間,最終解決,下面小編把我的解決辦法分享給大家,供大家參考2015-09-09
海量數(shù)據(jù)庫的查詢優(yōu)化及分頁算法方案 2 之 改良SQL語句
海量數(shù)據(jù)庫的查詢優(yōu)化及分頁算法方案 2 之 改良SQL語句...2007-03-03
Navicat?for?MySQL導(dǎo)入csv文件時出現(xiàn)中文亂碼的問題解決
在做數(shù)據(jù)對接導(dǎo)入的時候使用的數(shù)據(jù)是CSV格式的文件,導(dǎo)入發(fā)現(xiàn)了亂碼,下面這篇文章主要給大家介紹了關(guān)于Navicat?for?MySQL導(dǎo)入csv文件時出現(xiàn)中文亂碼的問題解決辦法,需要的朋友可以參考下2023-12-12
數(shù)據(jù)庫服務(wù)器構(gòu)建和部署檢查列表詳解
這篇文章主要介紹了數(shù)據(jù)庫服務(wù)器構(gòu)建和部署檢查列表的相關(guān)內(nèi)容,小編覺得挺不錯的,這里分享給大家,供各位參考。2017-10-10

