mysql 通過使用聯全索引優化Group by查詢
阿新 • • 發佈:2020-10-28
編寫一個 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 |
+-------+------+
重要提示:對於 MySQL 解決方案,如果要轉義用作列名的保留字,可以在關鍵字之前和之後使用撇號。例如 `Rank`
# Write your MySQL query statement below select s1.score as "Score",count(distinct s2.score) as "Rank" # distinct去重 from scores as s1,scores as s2 where s1.score<=s2.score group by s1.id order by s1.score desc;