IniziaInizia gratis

Classificare atleti di più paesi

Nel precedente esercizio hai usato RANK per assegnare le posizioni a un gruppo di atleti. Nei dati reali, però, troverai spesso numerosi gruppi all'interno del tuo insieme di dati. Senza partizionare i dati, i valori di un gruppo influenzeranno le classifiche degli altri.

Inoltre, mentre RANK salta i numeri in caso di valori identici, il modo più naturale di assegnare le posizioni è non saltarli. Se due paesi sono a pari merito al secondo posto, per la maggior parte delle persone il paese successivo è considerato terzo.

Questo esercizio fa parte del corso

Statistiche riepilogative e funzioni finestra in PostgreSQL

Visualizza il corso

Istruzioni dell'esercizio

  • Classifica gli atleti di ciascun paese in base al numero di medaglie ottenute — più alto è il conteggio, più alta è la posizione — senza saltare numeri in caso di valori identici.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

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;
Modifica ed esegui il codice