題目描述在鏈結 leetcode-178.分數排名
由題目描述我們可以得知需要求出兩部分內容:1.經過從大到小排序的分數score 2.排序後score對應的名次rank,若score相等,則屬於並列,名次相同
第一部分:顯示排序分數
這一部分較簡單,使用select-from-where搜尋語句,配合order by-desc降序排序:
select score
from scores
order
by score desc
第二部分:顯示分數對應的名次
這部分是本題的難點,如何求出沒個分數的名次?名次實際上等於某乙個分數大於等於所有分數的個數,也就是所有分數中大於等於它的個數,考慮到存在相同分數並列名次,因此,某一分數的排名計算方法為:去重後的所有分數大於等於它的個數
例如對於排名第一的分數,所有分數去重後只有乙個大於等於它即它自己,計算得到排名1;對於排名第二的分數,有第一和它自己大於等於它,計算得到排名二
我們為第一部分的表scores取別名a,在使用乙個表scores b進行score的自身聯表查詢,去重後大於等於a.score的b.score的個數就是a.score的排名
完整**:
select a.score,
(select
count
(distinct b.score)
from scores b where b.score>=a.score)
as rank
from scores a
order
by score desc
LeetCode資料庫 178 分數排名
編寫乙個 sql 查詢來實現分數排名。如果兩個分數相同,則兩個分數排名 rank 相同。請注意,平分後的下乙個名次應該是下乙個連續的整數值。換句話說,名次之間不應該有 間隔 id score 1 3.50 2 3.65 3 4.00 4 3.85 5 4.00 6 3.65 例如,根據上述給定的 s...
leetcode 資料庫 178 分數排名
題目 編寫乙個 sql 查詢來實現分數排名。如果兩個分數相同,則兩個分數排名 rank 相同。請注意,平分後的下乙個名次應該是下乙個連續的整數值。換句話說,名次之間不應該有 間隔 id score 1 3.50 2 3.65 3 4.00 4 3.85 5 4.00 6 3.65 例如,根據上述給定...
資料庫專題 leetcode178 分數排名
編寫乙個 sql 查詢來實現分數排名。如果兩個分數相同,則兩個分數排名 rank 相同。請注意,平分後的下乙個名次應該是下乙個連續的整數值。換句話說,名次之間不應該有 間隔 id score 1 3.50 2 3.65 3 4.00 4 3.85 5 4.00 6 3.65 例如,根據上述給定的 s...