資料庫專題 leetcode178 分數排名

2022-02-05 22:13:46 字數 1344 閱讀 9859

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

+----+-------+

| id | score |

+----+-------+

| 1 | 3.50 |

| 2 | 3.65 |

| 3 | 4.00 |

| 4 | 3.85 |

| 5 | 4.00 |

| 6 | 3.65 |

+----+-------+

例如,根據上述給定的 scores 表,你的查詢應該返回(按分數從高到低排列):

+-------+------+

| score | rank |

+-------+------+

| 4.00 | 1 |

| 4.00 | 1 |

| 3.85 | 2 |

| 3.65 | 3 |

| 3.65 | 3 |

| 3.50 | 4 |

+-------+------+

依照提議,需要知道分數的排名降序,所以order by desc .

第二列排名分析(參考題解):排名和人數無關,排名是乙個去重後的位置。

比如要知道4.00分數在什麼排名,可以取》=4.00的去重數量,這樣4.00的排名就是結果集合裡面的總數了。

所以依照這個思路:要知道4.00的排名:select count(distinct s2.score) from scores s2 where s2.score>=s.score

所以可以分為2步得到結果:

第一步後者降序後的結果:

select s.score

from scores s

order by s.score desc

第二步取得當前分數在全部分數裡面的排名

select count(distinct s2.score) 

from scores s2

where s2.score >= s.score

合併在一起即可。

select s.score,

( select count(distinct s2.score)

from scores s2

where s2.score >= s.score

) rank

from scores s

order by s.score desc

LeetCode 17最長公共字首。

編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例 1 輸入 flower flow flight 輸出 fl 示例 2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。說明 所有輸入只包含小寫字母a z。以第乙個為基準,比較後面的。class s...

LeetCode 17 被圍繞的區域

碼上生花,echarts 作品展示賽正式啟動!給定乙個二維的矩陣,包含 x 和 o 字母 o 找到所有被 x 圍繞的區域,並將這些區域裡所有的 o 用 x 填充。示例 x x x x x o o x x x o x x o x x 執行你的函式後,矩陣變為 x x x x x x x x x x x...

Leetcode17 電話號碼組合

leetcode17 號碼組合 給定乙個僅包含數字 2 9 的字串,返回所有它能表示的字母組合。給出數字到字母的對映如下 與 按鍵相同 注意 1 不對應任何字母。示例 輸入 23 輸出 ad ae af bd be bf cd ce cf 思路 大家都能想到,我每次從裡面選擇乙個數,然後把所有的可能...