Clasarea sportivilor din mai multe țări
În exercițiul anterior, ai folosit RANK pentru a atribui clasamente unui singur grup de sportivi. În datele reale, însă, vei întâlni adesea mai multe grupuri în același set de date. Fără să partiționezi datele, valorile unui grup le vor influența pe cele ale celorlalte.
De asemenea, RANK sare peste numere în cazul valorilor identice, dar cel mai natural mod de a atribui clasamente este să nu faci asta. Dacă două țări sunt la egalitate pe locul al doilea, țara de după ele este considerată, în general, a treia.
Acest exercițiu face parte din cursul
Statistici sumare și funcții de fereastră în PostgreSQL
Instrucțiuni pentru exercițiu
- Clasează sportivii fiecărei țări în funcție de numărul de medalii câștigate — cu cât numărul este mai mare, cu atât rangul este mai ridicat — fără a sări peste numere în cazul valorilor identice.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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;