昨天去面試時遇到一個這樣的問題:
有一張成績表,只有兩個字段,姓名和成績。怎樣用一個sql語句查詢出某個學生的姓名,成績以及在表中的排名?
一時間我也想不出具體實現(xiàn),我就提了兩種思路:一種是通過join關聯(lián)一個查詢出他排名的sql語句;一種是通過group by來實現(xiàn)。
回答得連自己都覺得有點心虛。請問大家如何實現(xiàn)呢?
假設:表名字為Course,兩個字段分別為name和score
實現(xiàn)語句:
SELECT 學生,成績,
(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.scorescore) AS sort
FROM course AS a order by sort
更多請到這里查看評論
您可能感興趣的文章:- 查詢數(shù)據(jù)排名情況SQL
- MySQL中給自定義的字段查詢結果添加排名的方法
- SQL查詢排名函數(shù)實例