1. 程式人生 > >【LeetCode】178.分數排名 筆記

【LeetCode】178.分數排名 筆記

178.分數排名

編寫一個 SQL查詢來實現分數排名。如果兩個分數相同,則兩個分數排名(Rank)相同。請注意,平分後的下一個名次應該是下一個連續的整數值。換句話說,名次之間不應該有間隔


答案:

此題的思路是對於每一個分數,找出表中有多少個大於或等於該分數的不同的分數,然後按降序排列即可。

  1. select Score, 
  2. (selectcount(distinct(Score)) from Scores 
  3. where Score >= s.Score) Rank  #使用表別名,與前一個數值進行比較,count大於s.score的score 
  4. from Scores s orderby Score 
    DESC;  #然後降序排列

此排名方式,是使用一個表的score對另一個表的各個score進行比較,實際上是通過count   score與 s.score的比較,算算>=的值的數量,來進行排序。