การเข้าถึงค่าจากแถวก่อนหน้า
การใช้ฟังก์ชัน LAG() ในคิวรีช่วยให้เข้าถึงข้อมูลจากแถวก่อนหน้าแถวปัจจุบันได้
รูปแบบ syntax มีดังนี้:
LAG(numeric_expression) OVER ([PARTITION BY column] ORDER BY column)
ในแบบฝึกหัดนี้ จะได้ใช้ฟังก์ชันนี้ในคิวรีเพื่อวิเคราะห์คะแนนของช็อกโกแลตที่ผลิตโดยบริษัทชื่อ "Fruition"
บริษัทนี้ผลิตช็อกโกแลตโดยใช้โกโก้จากหลากหลายภูมิภาคทั่วโลก
เป้าหมายคือตรวจสอบว่ามีความสัมพันธ์ระหว่างเปอร์เซ็นต์โกโก้และคะแนนที่ได้รับหรือไม่ สำหรับช็อกโกแลตที่มาจากแหล่งเดียวกัน โดยจะเปรียบเทียบเปอร์เซ็นต์โกโก้ของแต่ละแท่งกับเปอร์เซ็นต์ของแท่งที่ได้รับคะแนนก่อนหน้า จากนั้นคำนวณความแตกต่างระหว่างค่าทั้งสองและแปลผลลัพธ์
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
ฟังก์ชันสำหรับจัดการข้อมูลใน SQL Server
คำแนะนำการฝึกหัด
- สร้างคอลัมน์ใหม่ที่แสดงเปอร์เซ็นต์โกโก้ของช็อกโกแลตแท่งที่ได้รับคะแนนต่ำกว่า โดยมีแหล่งที่มาของโกโก้จากสถานที่เดียวกัน (ค่า
broad_bean_originเหมือนกัน) - สร้างคอลัมน์ใหม่ที่แสดงผลต่างระหว่างเปอร์เซ็นต์โกโก้ของแท่งปัจจุบันกับเปอร์เซ็นต์โกโก้ของแท่งก่อนหน้า
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
SELECT
broad_bean_origin AS bean_origin,
rating,
cocoa_percent,
-- Retrieve the cocoa % of the bar with the previous rating
___(___)
OVER(___ broad_bean_origin ORDER BY ___) AS percent_lower_rating
FROM ratings
WHERE company = 'Fruition'
ORDER BY broad_bean_origin, rating ASC;