ข้ามไปเนื้อหาหลัก

เจาะลึกคำสั่ง SQL LAG คำนวณ MoM Growth และ 3 กับดักที่พบบ่อย

คู่มือเขียนคำสั่ง SQL คำนวณอัตราการเติบโตเดือนต่อเดือน (MoM) พร้อมเผย 3 กับดักสำคัญอย่างปัญหาเดือนที่หายไปและผลหารจำนวนเต็มที่มักสร้างตัวเลขผิดพลาด

เรียบเรียงโดย AI
Inewgen
22 Aug 2026ที่มา: Dev.to2 นาทีอ่าน (0 ครั้ง)
แชร์
เจาะลึกคำสั่ง SQL LAG คำนวณ MoM Growth และ 3 กับดักที่พบบ่อย

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ขนาดตัวอักษร
  • การคำนวณการเติบโต MoM คือรายได้เดือนนี้ลบเดือนก่อนหน้าแล้วหารด้วยเดือนก่อนหน้า
  • ฟังก์ชัน LAG() ช่วยดึงค่าของแถวก่อนหน้ามาไว้บนแถวปัจจุบันเพื่อเปรียบเทียบ
  • ต้องระวัง 3 กับดักหลัก ได้แก่ การหารด้วยจำนวนเต็ม เดือนแรกที่ว่าง และเดือนที่ขาดหายไป

การคำนวณอัตราการเติบโตเทียบกับเดือนก่อนหน้า (Month-over-Month Growth) เป็นทักษะสำคัญสำหรับนักวิเคราะห์ข้อมูล แต่การเขียนคำสั่ง SQL เพื่อหาตัวเลขเหล่านี้อาจซ่อนข้อผิดพลาดไว้หากไม่ระวัง บทความจาก Dev.to โดย Michael Nocito นักวิเคราะห์ข้อมูล ได้เผยแพร่แนวทางการใช้งานฟังก์ชัน LAG() อย่างถูกต้อง พร้อมชี้ให้เห็น 3 กับดักที่มักทำให้ตัวเลขเปอร์เซ็นต์ผิดพลาดโดยที่ระบบไม่แจ้งเตือนข้อผิดพลาดใดๆ

หัวใจสำคัญของการเติบโตคือสูตรคณิตศาสตร์พื้นฐาน: นำรายได้เดือนนี้ลบด้วยรายได้เดือนก่อนหน้า แล้วหารด้วยรายได้เดือนก่อนหน้า ตัวอย่างเช่น หากเดือนมกราคมมีรายได้ 250 และเดือนกุมภาพันธ์มีรายได้ 300 ส่วนต่างคือ 50 ซึ่งเมื่อหารด้วย 250 จะได้ 0.2 หรือคิดเป็นอัตราการเติบโต 20% การหารด้วยฐานของเดือนก่อนหน้ามีความสำคัญมากเพราะช่วยเปลี่ยนตัวเลขดิบให้กลายเป็นสัดส่วนที่เปรียบเทียบกันได้จริงระหว่างธุรกิจขนาดเล็กและขนาดใหญ่

20%อัตราเติบโตจากม.ค. ถึง ก.พ.
12จำนวนคำสั่งซื้อในชุดข้อมูลทดสอบ
5จำนวนเดือนที่มีข้อมูลบันทึกจริง

ในทางปฏิบัติ การใช้ฟังก์ชัน LAG() ใน SQLite (รองรับตั้งแต่เวอร์ชัน 3.25 เป็นต้นไป) จะช่วยดึงค่าของแถวก่อนหน้าให้ขึ้นมาอยู่บนแถวปัจจุบันในคอลัมน์ใหม่ ทำให้สามารถนำมาคำนวณบวก ลบ คูณ หาร ได้ทันทีภายในแถวเดียว อย่างไรก็ตาม ข้อมูลดิบจะต้องถูกจัดกลุ่มรายเดือนเสียก่อนด้วยคำสั่ง GROUP BY เนื่องจากชุดข้อมูลจริงมักบันทึกเป็นรายรายการคำสั่งซื้อ ไม่ใช่รายเดือน

"Revenue grew 20% month over month, from 250 in January to 300 in February."

ไม่อยากพลาดข่าวใหม่?

สมัครรับสรุปข่าวสารใหม่ทางอีเมล ไม่บ่อยจนรำคาญ

โฆษณา

Michael Nocito
database table spreadsheet data rows columns

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

การวิเคราะห์เพิ่มเติม: ฟังก์ชันหน้าต่าง (Window Functions) เช่น LAG() มีประโยชน์อย่างมากในการวิเคราะห์อนุกรมเวลา (Time Series Analysis) เพราะช่วยให้เราอ้างอิงข้อมูลจากแถวข้างเคียงได้โดยไม่ต้องยุบรวมตาราง แต่ความท้าทายหลักคือการจัดการกับความต่อเนื่องของเวลา หากฐานข้อมูลมีรอยต่อหรือเดือนใดไม่มีธุรกรรมเกิดขึ้นเลย ฟังก์ชัน LAG() จะเลื่อนไปดึงข้อมูลของแถวก่อนหน้าที่บันทึกไว้จริงๆ โดยไม่สนใจว่าเดือนนั้นถูกข้ามไป ทำให้ผลลัพธ์การเติบโตผิดเพี้ยนไปจากความเป็นจริง

กับดักสำคัญที่สุด 3 ประการในการคำนวณ MoM ผ่าน SQL ได้แก่ การหารด้วยจำนวนเต็ม (Integer Division) ที่อาจทำให้เศษหายไป เดือนแรกที่ไม่มีข้อมูลเดือนก่อนหน้าให้เปรียบเทียบ (ค่า NULL) และปัญหาเดือนที่ขาดหายไปในระบบ (Missing Month) ซึ่งทำให้ฟังก์ชัน LAG() นำเดือนที่อยู่ห่างกันมาเปรียบเทียบกันโดยไม่รู้ตัว นักวิเคราะห์จึงควรตรวจสอบจำนวนเดือนที่ไม่ซ้ำกันในชุดข้อมูลเทียบกับปฏิทินจริงทุกครั้งก่อนเริ่มเขียนคำสั่งคำนวณ

ที่มา: Dev.to

ความคิดเห็น

แสดงความคิดเห็น
0/2000

พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้