Xếp hạng vận động viên theo số huy chương đạt được
Ở chương 1, bạn đã dùng ROW_NUMBER để xếp hạng vận động viên theo số huy chương được trao. Tuy nhiên, ROW_NUMBER gán các số thứ tự khác nhau cho những vận động viên có cùng số huy chương, nên nó không phù hợp để xếp hạng; nếu hai vận động viên có cùng số huy chương, họ nên có cùng hạng.
Bài tập này là một phần của khóa học
Thống kê tóm tắt và Window Functions trong PostgreSQL
Hướng dẫn bài tập
- Xếp hạng từng vận động viên theo số huy chương họ đạt được — số huy chương càng nhiều thì hạng càng cao — và dùng cùng một thứ hạng cho các giá trị trùng nhau.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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;