Bắt đầu ngayBắt đầu miễn phí

Xếp hạng vận động viên từ nhiều quốc gia

Ở bài trước, bạn đã dùng RANK để gán thứ hạng cho một nhóm vận động viên. Tuy nhiên, trong dữ liệu thực tế, bạn thường sẽ gặp nhiều nhóm khác nhau. Nếu không phân vùng dữ liệu, giá trị của nhóm này sẽ ảnh hưởng đến thứ hạng của nhóm khác.

Ngoài ra, trong khi RANK bỏ qua số thứ tự khi có các giá trị bằng nhau, cách gán hạng tự nhiên hơn là không bỏ qua số. Nếu hai quốc gia đồng hạng nhì, thì quốc gia tiếp theo thường được xem là hạng ba.

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

Xem khóa học

Hướng dẫn bài tập

  • Xếp hạng các vận động viên của từng quốc gia theo số huy chương họ giành được — số huy chương càng cao thì hạng càng cao — và không bỏ qua số thứ tự khi có các giá trị bằ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
    Country, Athlete, COUNT(*) AS Medals
  FROM Summer_Medals
  WHERE
    Country IN ('JPN', 'KOR')
    AND Year >= 2000
  GROUP BY Country, Athlete
  HAVING COUNT(*) > 1)

SELECT
  Country,
  -- Rank athletes in each country by the medals they've won
  ___,
  ___ OVER (PARTITION BY ___
                ORDER BY Medals DESC) AS Rank_N
FROM Athlete_Medals
ORDER BY Country ASC, RANK_N ASC;
Chỉnh sửa và Chạy Mã