MulaiMulai sekarang secara gratis

Memeringkat atlet dari beberapa negara

Pada latihan sebelumnya, Anda menggunakan RANK untuk memberikan peringkat pada satu kelompok atlet. Namun, dalam data dunia nyata, Anda sering menemukan banyak kelompok di dalam data. Tanpa mempartisi data, nilai dari satu kelompok akan memengaruhi peringkat kelompok lainnya.

Selain itu, meskipun RANK melewati nomor saat ada nilai yang sama, cara yang paling wajar untuk memberikan peringkat adalah tidak melewati nomor. Jika dua negara seri di peringkat kedua, negara setelahnya oleh kebanyakan orang dianggap berada di peringkat ketiga.

Latihan ini adalah bagian dari kursus

Ringkasan Statistik dan Window Functions di PostgreSQL

Lihat Kursus

Petunjuk latihan

  • Peringkatkan atlet di setiap negara berdasarkan jumlah medali yang mereka peroleh — semakin tinggi jumlahnya, semakin tinggi peringkatnya — tanpa melewati nomor saat ada nilai yang sama.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

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;
Edit dan Jalankan Kode