[SQL Server] เชื่อหรือไม่ว่า SQL เอาตัวเลขมาลบกันได้

พอดีวันนี้งานที่ทำมีโจทย์ให้ว่าให้หาข้อมูลการซื้อ(BUY) และข้อมูลการขาย (SELL)  ณ ช่วงเวลาหนึ่ง เพื่อหาจำนวนสินค้าที่มีเรามีถืออยู่ (On Hand) ข้อมูลโครงสร้างตารางต่างๆ อ้างอิงจากหัวข้อที่ผ่านมา

เตรียมข้อมูล

  • กำหนดโครงสร้างตาราง OrderTx ดังรูป
s1
  • กำหนดข้อมลให้ตาราง ดังนี้
s2

ความต้องการ(โจทย์)

จากข้อมูลการซื้อ(BUY) และข้อมูลการขาย (SELL)  ณ ช่วงเวลาหนึ่ง(ระหว่างวันที่ 01-OCT-2013 ถึง 10-OCT-2013) เพื่อหาจำนวนสินค้าที่มีเรามีถืออยู่ (On Hand)

วิธีการแก้ปัญหา

หากติดความจากโจทย์เราสามารถแบ่งออกเป็น Query ย่อยๆ ได้ดังนี้

  • หาผลรวม(SUM) ของข้อมูลการซื้อ(BUY)ระหว่างวันที่ 01-OCT-2013 ถึง 10-OCT-2013
q1
  • หาผลรวม(SUM) ของข้อมูลการขาย(SELL)ระหว่างวันที่ 01-OCT-2013 ถึง 10-OCT-2013
q2
  • นำผลรวมการซื้อ(BUY) - ผลรวมของการขาย(SELL)
q3

สรุป

ภาษา SQL ทำอะไรได้มากกว่าที่คุณคิด เพียงแค่ต้องรู้จักลองและทดสอบ จากตัวอย่างนี้หลักทีใช้ คือ Keyword AS, Operator minus และทริกการ SELECT ซ้อนกัน ถ้าหากเราเอาไปเขียนโปรแกรม ต้องมี Loop เพิ่มเพื่อหาผลรวมอีก ซึ่งหากมีข้อมูลเยอะๆประมาณ 100,000 รายการแล้ว เราจะพบถึงความแตกต่างในแง่ของความเร็วอย่างชัดเจน


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.