ÎncepețiÎncepe gratuit

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

Vezi cursul

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;
Editează și rulează codul