จัดอันดับนักกีฬาตามเหรียญที่ได้รับ
ในบทที่ 1 คุณใช้ ROW_NUMBER เพื่อจัดอันดับนักกีฬาตามจำนวนเหรียญที่ได้รับ อย่างไรก็ตาม ROW_NUMBER จะกำหนดตัวเลขที่ต่างกันให้กับนักกีฬาที่มีจำนวนเหรียญเท่ากัน จึงไม่เหมาะสำหรับการจัดอันดับ เพราะหากนักกีฬาสองคนได้รับเหรียญเท่ากัน พวกเขาควรได้รับอันดับเดียวกัน
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
PostgreSQL Summary Stats and Window Functions
คำแนะนำการฝึกหัด
- จัดอันดับนักกีฬาแต่ละคนตามจำนวนเหรียญที่ได้รับ โดยยิ่งได้รับมากยิ่งอันดับสูง และให้อันดับเดียวกันในกรณีที่มีค่าเท่ากัน
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
WITH Athlete_Medals AS (
SELECT
Athlete,
COUNT(*) AS Medals
FROM Summer_Medals
GROUP BY Athlete)
SELECT
Athlete,
Medals,
-- Rank athletes by the medals they've won
___ OVER (ORDER BY ___ DESC) AS Rank_N
FROM Athlete_Medals
ORDER BY Medals DESC;