編寫乙個 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 思路 大家都能想到,我每次從裡面選擇乙個數,然後把所有的可能...