สมมติว่ามีตาราง ยอดขาย ที่มีข้อมูลหลายล้านแถว และต้องการหายอดขายสะสมต่อเดือน (Running Total) เรียงตามวันที่ ควรใช้เทคนิคใดที่เหมาะสมที่สุด
กใช้ SUM() OVER (ORDER BY วันที่ ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
ขใช้ Subquery ในการ SELECT โดยนับยอดขายทุกแถวที่มีวันที่น้อยกว่าหรือเท่ากับแถวปัจจุบัน
คใช้ UNION ALL เพื่อรวมข้อมูลทีละเดือนแล้วคำนวณรวม
งใช้ GROUP BY เดือน แล้วนำผลลัพธ์มาบวกสะสมด้วยโปรแกรม
เฉลยอธิบาย
Window Function SUM() OVER() พร้อม ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW คือวิธีที่เหมาะสมที่สุดสำหรับ Running Total เพราะประมวลผลในครั้งเดียวโดยไม่ต้อง Self-Join หรือ Correlated Subquery ซึ่งมีประสิทธิภาพสูงมากสำหรับข้อมูลขนาดใหญ่ ตัวเลือก B เป็น correlated subquery ที่อาจคำนวณซ้ำ ส่วน A ใช้ UNION ALL และ D ต้องประมวลผลนอกฐานข้อมูล ทั้งนี้ควรระบุคอลัมน์ผูกลำดับเพิ่มเมื่อวันที่ซ้ำเพื่อให้ running total แน่นอน