按获得奖牌数为运动员排名
在第 1 章中,您使用过 ROW_NUMBER 按授予的奖牌数为运动员排序。然而,ROW_NUMBER 会为奖牌数相同的运动员分配不同的编号,因此它并不是一个有用的排名函数;如果两位运动员获得的奖牌数相同,他们应当拥有相同的名次。
本练习是课程的一部分
PostgreSQL 汇总统计与窗口函数
练习说明
- 按每位运动员获得的奖牌数进行排名——数量越多,名次越高——当数值相同时,应给出相同的名次编号。
交互式实操练习
通过完成这段示例代码来试试这个练习。
WITH Athlete_Medals AS (
SELECT
Athlete,
COUNT(*) AS Medals
FROM Summer_Medals
GROUP BY Athlete)
SELECT
Athlete,
Medals,
-- Rank athletes by the medals they've won
___ OVER (ORDER BY ___ DESC) AS Rank_N
FROM Athlete_Medals
ORDER BY Medals DESC;