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

Moving maximum ของเหรียญรางวัลนักกีฬาจีน

Frame ช่วยให้สามารถ "มองไปข้างหน้าหรือย้อนกลับ" ได้โดยไม่ต้องใช้ฟังก์ชัน relative fetching อย่าง LAG และ LEAD เพื่อดึงค่าจากแถวก่อนหน้ามาไว้ในแถวปัจจุบันก่อน

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

PostgreSQL Summary Stats and Window Functions

ดูคอร์ส

คำแนะนำการฝึกหัด

  • คืนค่าชื่อนักกีฬา จำนวนเหรียญที่ได้รับ และจำนวนเหรียญสูงสุด โดยเปรียบเทียบเฉพาะนักกีฬา 2 คนก่อนหน้าและนักกีฬาปัจจุบัน เรียงลำดับตามชื่อนักกีฬาจากน้อยไปมากตามตัวอักษร

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

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

WITH Chinese_Medals AS (
  SELECT
    Athlete, COUNT(*) AS Medals
  FROM Summer_Medals
  WHERE
    Country = 'CHN' AND Medal = 'Gold'
    AND Year >= 2000
  GROUP BY Athlete)

SELECT
  -- Select the athletes and the medals they've earned
  ___,
  ___,
  -- Get the max of the last two and current rows' medals 
  ___ OVER (ORDER BY ___ ASC
            ROWS BETWEEN ___
            AND ___) AS Max_Medals
FROM Chinese_Medals
ORDER BY Athlete ASC;
แก้ไขและรันโค้ด