การดึงค่าแรกและค่าสุดท้าย
ฟังก์ชัน analytic ที่คืนค่าแรกหรือค่าสุดท้ายจากรายการที่เรียงลำดับแล้วนั้นมีประโยชน์มากในการเขียนคิวรี ในแบบฝึกหัดนี้ เราจะมาทำความคุ้นเคยกับฟังก์ชันเหล่านี้กัน ไวยากรณ์มีดังนี้:
FIRST_VALUE(numeric_expression) OVER ([PARTITION BY column] ORDER BY column ROW_or_RANGE frame)LAST_VALUE(numeric_expression) OVER ([PARTITION BY column] ORDER BY column ROW_or_RANGE frame)
ให้เขียนคิวรีเพื่อดึงข้อมูลผู้ลงคะแนนเสียงทั้งหมดจากสเปนและสหรัฐอเมริกา จากนั้นเพิ่มคำสั่งในคิวรีเพื่อดึงวันเกิดของผู้ลงคะแนนที่อายุน้อยที่สุดและอายุมากที่สุดจากแต่ละประเทศ โดยต้องการให้ค่าเหล่านี้แสดงในทุกแถว เพื่อให้สามารถเปรียบเทียบกับวันเกิดของผู้ลงคะแนนแต่ละคนได้
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
ฟังก์ชันสำหรับจัดการข้อมูลใน SQL Server
คำแนะนำการฝึกหัด
- ดึงวันเกิดของผู้ลงคะแนนที่อายุมากที่สุดจากแต่ละประเทศ
- ดึงวันเกิดของผู้ลงคะแนนที่อายุน้อยที่สุดจากแต่ละประเทศ
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
SELECT
first_name + ' ' + last_name AS name,
country,
birthdate,
-- Retrieve the birthdate of the oldest voter per country
___(birthdate)
OVER (PARTITION BY ___ ORDER BY ___) AS oldest_voter,
-- Retrieve the birthdate of the youngest voter per country
___(___)
OVER (___ country ORDER BY ___ ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
) AS youngest_voter
FROM voters
WHERE country IN ('Spain', 'USA');