只有兩個欄位用一個sql語句查詢出某個學生的姓名、成績以及在表中的排名,sql語句

來源:互聯網
上載者:User

只有兩個欄位用一個sql語句查詢出某個學生的姓名、成績以及在表中的排名,sql語句

昨天去面試時遇到一個這樣的問題:

有一張成績表,只有兩個欄位,姓名和成績。怎樣用一個sql語句查詢出某個學生的姓名,成績以及在表中的排名?
一時間我也想不出具體實現,我就提了兩種思路:一種是通過join關聯一個查詢出他排名的sql語句;一種是通過group by來實現。
回答得連自己都覺得有點心虛。請問大家如何?呢?
假設:表名字為Course,兩個欄位分別為name和score

實現語句:

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的語句確實有一些瑕疵,但是我根據他的語句稍微修改了一下就很完美了。

SELECT name,score, (SELECT COUNT(*)+1 FROM course WHERE a.score<score) AS sort FROM course AS a order by sort

更多請到這裡查看評論


資料庫查詢的程式,幫忙看一下

因為分數並列時排名也是並列,所以楓的SQL需要略加修改,其中@studentname為需要查詢的學生名:
select name,score,((select count(*) from score where course as t_Temp where t_Temp.score < course.score)+1) as scoreindex from course where name=@studentname
 
SQL 問題

select *,(select count(1) from (select distinct fs from Course
) t where t.fs>=a.fs) as paiming
from Course
a
order by score desc,name;
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.