การเข้าถึงค่าจากแถวถัดไป
ด้วยฟังก์ชัน LEAD() คุณสามารถเข้าถึงข้อมูลจากแถวถัดไปในคิวรีเดียวกันได้ โดยไม่ต้องใช้ statement GROUP BY วิธีนี้ช่วยให้เปรียบเทียบค่าต่าง ๆ จากรายการที่เรียงลำดับแล้วได้อย่างสะดวก
รูปแบบการใช้งานมีดังนี้:
LEAD(numeric_expression) OVER ([PARTITION BY column] ORDER BY column)
ในแบบฝึกหัดนี้ จะได้ฝึกเปรียบเทียบค่าในแถวปัจจุบันกับค่าในแถวถัดไป
ให้เลือกข้อมูลของผู้ลงคะแนนจากฝรั่งเศส และจัดเรียงผลลัพธ์ตามจำนวนคะแนนโหวตทั้งหมดจากน้อยไปมาก จุดประสงค์คือเพื่อวิเคราะห์ว่าจำนวนคะแนนของผู้ลงคะแนนแต่ละรายแตกต่างจากจำนวนคะแนนของบุคคลถัดไปในรายการอย่างไร
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
ฟังก์ชันสำหรับจัดการข้อมูลใน SQL Server
คำแนะนำการฝึกหัด
- สร้างคอลัมน์ใหม่ที่แสดงจำนวนคะแนนโหวตของบุคคลถัดไปในรายการ
- สร้างคอลัมน์ใหม่ที่แสดงผลต่างระหว่าง
total_votesของผู้ลงคะแนนคนปัจจุบันกับคะแนนของบุคคลถัดไป
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
SELECT
first_name,
last_name,
total_votes AS votes,
-- Select the number of votes of the next voter
___(___) OVER (___ total_votes) AS votes_next_voter,
-- Calculate the difference between the number of votes
LEAD(___) ___ (ORDER BY ___) - total_votes AS votes_diff
FROM voters
WHERE country = 'France'
ORDER BY total_votes;