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
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;