Rangordna idrottare från flera länder
I föregående övning använde du RANK för att rangordna en grupp idrottare. I verkliga data stöter du dock ofta på flera grupper. Utan partitionering påverkar en grupps värden rankingen för de övriga.
Dessutom hoppar RANK över tal vid identiska värden, men det vanligaste sättet att rangordna är att inte hoppa över tal. Om två länder delar andraplatsen brukar de flesta anse att nästa land hamnar på tredje plats.
Den här övningen är en del av kursen
PostgreSQL – Sammanfattande statistik och fönsterfunktioner
Övningsinstruktioner
- Rangordna varje lands idrottare efter antalet medaljer de har vunnit – ju fler medaljer, desto högre ranking – utan att hoppa över tal vid identiska värden.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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;