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

นักกีฬาที่ได้รับเหรียญมากที่สุดในแต่ละภูมิภาค

เป้าหมายของแบบฝึกหัดนี้คือการแสดงนักกีฬาที่ได้รับเหรียญมากที่สุด ในแต่ละภูมิภาค ในการสร้างรายงานนี้ ต้องใช้ window function ROW_NUMBER() ซึ่งกำหนดหมายเลขให้แต่ละแถวเป็นจำนวนเต็มที่เพิ่มขึ้นทีละหนึ่ง โดยแถวแรกคือ 1 แถวที่สองคือ 2 และต่อไปเรื่อย ๆ

ไวยากรณ์ของ window function นี้คือ ROW_NUMBER() OVER (PARTITION BY field ORDER BY field) สังเกตว่าไม่มี argument ภายในฟังก์ชันเริ่มต้น

เมื่อตั้งค่าถูกต้อง row_num = 1 จะหมายถึงนักกีฬาที่ได้รับเหรียญมากที่สุดในภูมิภาคนั้น หากนักกีฬาหลายคนมียอดรวมเท่ากัน คนใดคนหนึ่งในกลุ่มที่เสมอกันอาจปรากฏเป็นผลลัพธ์อันดับสูงสุด ทั้งนี้ ไม่สามารถใช้การคำนวณแบบ window ภายใน HAVING หรือ WHERE ได้ จึงต้องใช้ subquery ในการกรองข้อมูล

สามารถอ้างอิง E:R Diagram ได้ตามต้องการ และจะใช้ summer_games_clean เพื่อหลีกเลี่ยงการจัดการค่า null

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การรายงานผลด้วย SQL

ดูคอร์ส

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

SELECT 
	-- Query region, athlete_name, and total gold medals
	____, 
    ____ AS athlete_name, 
    ____ AS total_golds,
    -- Assign a regional rank to each athlete
    ____ AS row_num
FROM ____ AS s
JOIN ____ AS a
ON ____
JOIN ____ AS c
ON ____
GROUP BY ____;
แก้ไขและรันโค้ด