कई देशों के एथलीट्स की रैंकिंग
पिछले अभ्यास में, आपने RANK का उपयोग करके एथलीट्स के एक समूह को रैंक दी थी। लेकिन वास्तविक डेटा में, अक्सर आपके डेटा के भीतर कई समूह होते हैं। यदि आप अपने डेटा को partition नहीं करते, तो एक समूह के मान दूसरे समूहों की रैंकिंग को प्रभावित करेंगे।
साथ ही, RANK एक जैसे मानों पर नंबर छोड़ देता है, जबकि रैंक देने का अधिक स्वाभाविक तरीका यह है कि नंबर न छोड़े जाएँ। यदि दो देश दूसरे स्थान पर बराबर हैं, तो ज़्यादातर लोग उसके बाद वाले देश को तीसरे स्थान पर मानते हैं.
यह अभ्यास पाठ्यक्रम का हिस्सा है
PostgreSQL Summary Stats और Window Functions
अभ्यास निर्देश
- प्रत्येक देश के एथलीट्स को उनके जीते हुए मेडल्स की गिनती के आधार पर रैंक करें — जितनी अधिक गिनती, उतनी ऊँची रैंक — और एक जैसे मानों के मामले में नंबर न छोड़ें.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
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;