1. 程式人生 > 實用技巧 >mysql 通過使用聯全索引優化Group by查詢

mysql 通過使用聯全索引優化Group by查詢

編寫一個 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;