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

- กำหนดข้อมลให้ตาราง ดังนี้

ความต้องการ(โจทย์)
จากข้อมูลการซื้อ(BUY) และข้อมูลการขาย (SELL) ณ ช่วงเวลาหนึ่ง(ระหว่างวันที่ 01-OCT-2013 ถึง 10-OCT-2013) เพื่อหาจำนวนสินค้าที่มีเรามีถืออยู่ (On Hand)
วิธีการแก้ปัญหา
หากติดความจากโจทย์เราสามารถแบ่งออกเป็น Query ย่อยๆ ได้ดังนี้
- หาผลรวม(SUM) ของข้อมูลการซื้อ(BUY)ระหว่างวันที่ 01-OCT-2013 ถึง 10-OCT-2013

- หาผลรวม(SUM) ของข้อมูลการขาย(SELL)ระหว่างวันที่ 01-OCT-2013 ถึง 10-OCT-2013

- นำผลรวมการซื้อ(BUY) - ผลรวมของการขาย(SELL)

สรุป
ภาษา SQL ทำอะไรได้มากกว่าที่คุณคิด เพียงแค่ต้องรู้จักลองและทดสอบ จากตัวอย่างนี้หลักทีใช้ คือ Keyword AS, Operator minus และทริกการ SELECT ซ้อนกัน ถ้าหากเราเอาไปเขียนโปรแกรม ต้องมี Loop เพิ่มเพื่อหาผลรวมอีก ซึ่งหากมีข้อมูลเยอะๆประมาณ 100,000 รายการแล้ว เราจะพบถึงความแตกต่างในแง่ของความเร็วอย่างชัดเจน
Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts sent to your email.