เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

จัดอันดับนักกีฬาตามเหรียญที่ได้รับ

ในบทที่ 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;
แก้ไขและรันโค้ด